Skip to content

Commit

Permalink
Create the storage pool jumbo-storage at Jumbo install for libvirt
Browse files Browse the repository at this point in the history
  • Loading branch information
Nuttymoon committed Oct 21, 2018
1 parent 5b901ad commit 05765c0
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 4 deletions.
5 changes: 3 additions & 2 deletions jumbo/utils/session.py
Expand Up @@ -4,7 +4,7 @@
import os

from jumbo.utils import exceptions as ex, checks, versions as vs
from jumbo.utils.settings import JUMBODIR, NOT_HADOOP_COMP
from jumbo.utils.settings import JUMBODIR, NOT_HADOOP_COMP, POOLNAME
from jumbo.core import clusters

svars = {
Expand Down Expand Up @@ -46,7 +46,8 @@ def dump_config(services_components_hosts=None):
with open(JUMBODIR + svars['cluster'] + '/Vagrantfile', 'w') as vf:
vf.write(vagrant_temp.render(hosts=get_ordered_nodes(),
domain=svars['domain'],
cluster=svars['cluster']))
cluster=svars['cluster'],
pool_name=POOLNAME))

hosts_temp = jinja_env.get_template('hosts.j2')
with open(JUMBODIR + svars['cluster'] + '/playbooks/inventory/hosts',
Expand Down
1 change: 1 addition & 0 deletions jumbo/utils/settings.py
Expand Up @@ -4,6 +4,7 @@
OS = platform.system()

JUMBODIR = os.path.expanduser('~/.jumbo/')
POOLNAME = 'jumbo-storage'

NOT_HADOOP_COMP = [
'ANSIBLE_CLIENT',
Expand Down
2 changes: 1 addition & 1 deletion jumbo/utils/templates/Vagrantfile.j2
Expand Up @@ -23,7 +23,7 @@ Vagrant.configure("2") do |config|
config.vm.box_check_update = false
config.vm.provider :libvirt do |libvirt|
# Don't forget to create your storage pool
libvirt.storage_pool_name="hdp-cluster"
libvirt.storage_pool_name="{{ pool_name }}"
libvirt.driver="kvm"
libvirt.uri="qemu:///system"
end
Expand Down
64 changes: 63 additions & 1 deletion setup.py
@@ -1,5 +1,12 @@
from setuptools import setup
import os
import pathlib
import subprocess

from setuptools import setup
from shutil import which

POOLNAME = 'jumbo-storage'
POOLDIR = '/var/lib/libvirt/images/%s' % POOLNAME


def generate_package_data(package_dir, data_dirs):
Expand All @@ -20,6 +27,59 @@ def generate_package_data(package_dir, data_dirs):
return data


def create_storage_pool():
"""Create a storage pool jumbo-storage to provision clusters using libvirt
"""

if which('virsh'):
if not os.path.isdir(POOLDIR):
pathlib.Path(POOLDIR).mkdir()

pool_test = subprocess.Popen([
'sudo',
'virsh',
'pool-info',
POOLNAME
])

# If the storage pool doesn't exist
if not pool_test.poll():
res = subprocess.Popen([
'sudo',
'virsh',
'pool-define-as',
'--target', POOLDIR,
'--name', POOLNAME,
'--type', 'dir'
],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT
)

for line in res.stdout:
print(line.decode('utf-8').rstrip())

res = subprocess.Popen([
'sudo',
'virsh',
'pool-autostart',
POOLNAME
],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT
)

res = subprocess.Popen([
'sudo',
'virsh',
'pool-start',
POOLNAME
],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT
)


setup(
name='Jumbo',
version='0.4.3',
Expand All @@ -45,3 +105,5 @@ def generate_package_data(package_dir, data_dirs):
jumbo=jumbo.cli.main:jumbo
'''
)

create_storage_pool()

0 comments on commit 05765c0

Please sign in to comment.