Skip to content

Instantly share code, notes, and snippets.

@cloudnull
Last active May 19, 2016 21:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cloudnull/2f3931e51062dc7b325faf9a24974006 to your computer and use it in GitHub Desktop.
Save cloudnull/2f3931e51062dc7b325faf9a24974006 to your computer and use it in GitHub Desktop.
Build N number of servers
clouds:
osic-ci:
auth:
auth_url: http://localhost:5000
project_name: admin
username: admin
password: SuperSecrete
region_name: RegionOne
#!/usr/bin/env python2
# To run a parallel test with many VMs use gnu-parallel
# command exaample: parallel -k -n0 -j 24 ./serial-shade-test.py ::: {1..24}
import shade
import multiprocessing
import uuid
import time
# ============================ TEST CONSTANTS ============================
CLOUD_NAME = 'osic-infra-test'
CLOUD_FLAVOR_NAME = 'm1.small'
CLOUD_IMAGE_NAME = 'ubuntu-server-14.04'
CLOUD_NODE_BASENAME = 'ADMIN_SHADE_TEST_NODE'
CLOUD_NETWORK_ID = 'fd9d445a-7d6b-44f8-b349-aaa20498eb38'
CLOUD_KEYNAME = 'cloudnull'
# ============================ TEST CONSTANTS ============================
# shade.simple_logging(debug=True)
cloud = shade.openstack_cloud(cloud=CLOUD_NAME)
flavor = cloud.get_flavor(CLOUD_FLAVOR_NAME)
image = cloud.get_image(CLOUD_IMAGE_NAME)
name = CLOUD_NODE_BASENAME
network = cloud.get_network(CLOUD_NETWORK_ID)
def shade_create_job(**kwargs):
try:
print('server create')
server = cloud.wait_for_server(
server=cloud.create_server(wait=False, **kwargs),
auto_ip=True,
reuse=False,
timeout=120
)
print(server)
except Exception as exp:
print('FAILURE PROCESSING: %s -- ERROR: %s' % (kwargs['name'], exp))
def shade_delete_job(**kwargs):
try:
cloud.delete_server(kwargs['name'], wait=kwargs['wait'], delete_ips=kwargs['delete_ips'])
except Exception as exp:
print('FAILURE PROCESSING: %s -- ERROR: %s' % (kwargs['name'], exp))
kwargs = {
'name': '%s-%s' % (name, uuid.uuid4()),
'image': image,
'flavor': flavor,
'key_name': CLOUD_KEYNAME,
'availability_zone': 'nova',
'nics': [{'net-id': network['id']}]
}
print('Starting build test')
server = shade_create_job(**kwargs)
print('Starting delete test')
kwargs['delete_ips'] = True
kwargs['wait'] = False
shade_delete_job(**kwargs)
#!/usr/bin/env python2
import shade
import multiprocessing
import uuid
# ============================ TEST CONSTANTS ============================
CLOUD_SERVER_COUNT = 24
CLOUD_NAME = 'osic-infra-test'
CLOUD_FLAVOR_NAME = 'm1.small'
CLOUD_IMAGE_NAME = 'ubuntu-server-14.04'
CLOUD_NODE_BASENAME = 'ADMIN_SHADE_TEST_NODE'
CLOUD_NETWORK_ID = 'fd9d445a-7d6b-44f8-b349-aaa20498eb38'
CLOUD_KEYNAME = 'cloudnull'
# ============================ TEST CONSTANTS ============================
def shade_create_job(**kwargs):
# shade.simple_logging(debug=True)
cloud = shade.openstack_cloud(cloud=CLOUD_NAME)
flavor = cloud.get_flavor(CLOUD_FLAVOR_NAME)
image = cloud.get_image(CLOUD_IMAGE_NAME)
network = cloud.get_network(CLOUD_NETWORK_ID)
kwargs.update({
'image': image,
'flavor': flavor,
'key_name': CLOUD_KEYNAME,
'availability_zone': 'nova',
'nics': [{'net-id': network['id']}]
})
try:
print('server create')
server = cloud.wait_for_server(
server=cloud.create_server(wait=False, **kwargs),
auto_ip=True,
reuse=False,
timeout=120
)
print(server)
except Exception as exp:
print('FAILURE PROCESSING: %s -- ERROR: %s' % (kwargs['name'], exp))
def shade_delete_job(**kwargs):
cloud = shade.openstack_cloud(cloud=CLOUD_NAME)
try:
cloud.delete_server(kwargs['name'], wait=kwargs['wait'], delete_ips=kwargs['delete_ips'])
except Exception as exp:
print('FAILURE PROCESSING: %s -- ERROR: %s' % (start_job.name, exp))
kwargs = dict()
create_jobs = list()
for _ in range(CLOUD_SERVER_COUNT):
node_kwargs = kwargs.copy()
node_kwargs['name'] = '%s-%s' % (CLOUD_NODE_BASENAME, uuid.uuid4())
create_jobs.append(node_kwargs)
to_do_jobs = [
multiprocessing.Process(
target=shade_create_job,
kwargs=job,
name=job['name']
)
for job in create_jobs
]
print('Starting build test')
for start_job in to_do_jobs:
start_job.start()
for wait_on_job in to_do_jobs:
wait_on_job.join()
delete_jobs = list()
for job in create_jobs:
delete_job = job.copy()
delete_job['wait'] = False
delete_job['delete_ips'] = True
delete_jobs.append(delete_job)
to_do_jobs = [
multiprocessing.Process(
target=shade_delete_job,
kwargs=job,
name=job['name']
)
for job in delete_jobs
]
print('Starting delete test')
for start_job in to_do_jobs:
start_job.start()
for wait_on_job in to_do_jobs:
wait_on_job.join()
import shade
import multiprocessing
import random
import time
import uuid
SERVER_COUNT=25
# shade.simple_logging(debug=True)
cloud = shade.openstack_cloud(cloud='osic-ci')
flavor = cloud.get_flavor('m2.medium')
image = cloud.get_image('ubuntu-server-14.04')
name = 'ADMIN_TEST_NODE'
network = cloud.get_network('ADMIN_TEST_NET')
ip_pool = 'GATEWAY_NET'
build_errors = list()
def shade_job(**kwargs):
try:
node = cloud.create_server(**kwargs)
except Exception as exp:
print('FAILURE PROCESSING: %s -- ERROR: %s' % (start_job.name, exp))
else:
print(node)
kwargs = {
'auto_ip': False,
'image': image,
'flavor': flavor,
'wait': True,
'network': network['id'],
'ip_pool': ip_pool
}
jobs = list()
for _ in range(SERVER_COUNT):
node_kwargs = kwargs.copy()
node_kwargs['name'] = '%s-%s' % (name, uuid.uuid4())
jobs.append(node_kwargs)
to_do_jobs = [
multiprocessing.Process(
target=shade_job,
kwargs=job,
name=job['name']
)
for job in jobs
]
for start_job in to_do_jobs:
time.sleep(random.uniform(random.randint(2,12), 2))
start_job.start()
for wait_on_job in to_do_jobs:
wait_on_job.join()
for job in jobs:
try:
cloud.delete_server(job['name'], wait=True, delete_ips=True)
except Exception as exp:
print('FAILED TO DELETE NODE, ERROR: %s' % exp)
import shade
import multiprocessing
import uuid
SERVER_COUNT=25
# shade.simple_logging(debug=True)
cloud = shade.openstack_cloud(cloud='osic-ci')
flavor = cloud.get_flavor('m2.medium')
image = cloud.get_image('ubuntu-server-14.04')
name = 'ADMIN_TEST_NODE'
network = cloud.get_network('ADMIN_TEST_NET')
ip_pool = 'GATEWAY_NET'
build_errors = list()
def shade_job(**kwargs):
try:
cloud.create_server(**kwargs)
except Exception as exp:
print('FAILURE PROCESSING: %s -- ERROR: %s' % (start_job.name, exp))
kwargs = {
'auto_ip': False,
'image': image,
'flavor': flavor,
'wait': True,
'network': network['id'],
'ip_pool': ip_pool
}
jobs = list()
for _ in range(SERVER_COUNT):
node_kwargs = kwargs.copy()
node_kwargs['name'] = '%s-%s' % (name, uuid.uuid4())
jobs.append(node_kwargs)
to_do_jobs = [
multiprocessing.Process(
target=shade_job,
kwargs=job,
name=job['name']
)
for job in jobs
]
for start_job in to_do_jobs:
start_job.start()
for wait_on_job in to_do_jobs:
wait_on_job.join()
for job in jobs:
try:
cloud.delete_server(job['name'], wait=True, delete_ips=True)
except Exception as exp:
print('FAILED TO DELETE NODE, ERROR: %s' % exp)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment