Merge "Add OpenStack volume quota"
This commit is contained in:
48
nodepool/tests/fixtures/node_quota_cloud_volumes.yaml
vendored
Normal file
48
nodepool/tests/fixtures/node_quota_cloud_volumes.yaml
vendored
Normal 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
|
||||
48
nodepool/tests/fixtures/node_quota_pool_volume_gb.yaml
vendored
Normal file
48
nodepool/tests/fixtures/node_quota_pool_volume_gb.yaml
vendored
Normal 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
|
||||
48
nodepool/tests/fixtures/node_quota_pool_volumes.yaml
vendored
Normal file
48
nodepool/tests/fixtures/node_quota_pool_volumes.yaml
vendored
Normal 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
|
||||
52
nodepool/tests/fixtures/node_quota_tenant_volume_gb.yaml
vendored
Normal file
52
nodepool/tests/fixtures/node_quota_tenant_volume_gb.yaml
vendored
Normal 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
|
||||
52
nodepool/tests/fixtures/node_quota_tenant_volumes.yaml
vendored
Normal file
52
nodepool/tests/fixtures/node_quota_tenant_volumes.yaml
vendored
Normal 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
|
||||
@@ -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'''
|
||||
|
||||
|
||||
Reference in New Issue
Block a user