diff options
-rw-r--r-- | deploy/cloud/deploy.py | 4 | ||||
-rw-r--r-- | deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml | 5 | ||||
-rw-r--r-- | deploy/dea.py | 8 | ||||
-rw-r--r-- | deploy/dha_adapters/hardware_adapter.py | 5 | ||||
-rw-r--r-- | deploy/environments/execution_environment.py | 8 | ||||
-rw-r--r-- | deploy/environments/libvirt_environment.py | 12 | ||||
-rw-r--r-- | deploy/environments/virtual_fuel.py | 3 | ||||
-rwxr-xr-x | prototypes/sfc_tacker/poc.tacker-up.sh | 27 |
8 files changed, 46 insertions, 26 deletions
diff --git a/deploy/cloud/deploy.py b/deploy/cloud/deploy.py index 3d3017e42..07d5d578f 100644 --- a/deploy/cloud/deploy.py +++ b/deploy/cloud/deploy.py @@ -43,8 +43,8 @@ class Deploy(object): def assign_roles_to_cluster_node_ids(self): self.node_roles_dict = {} for blade, node in self.blade_node_dict.iteritems(): - if self.dea.get_node_role(blade): - roles = commafy(self.dea.get_node_role(blade)) + if self.dea.get_node_roles(blade): + roles = commafy(self.dea.get_node_roles(blade)) self.node_roles_dict[node] = (roles, blade) def configure_environment(self): diff --git a/deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml b/deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml index e70d8ca82..851509871 100644 --- a/deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml +++ b/deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml @@ -36,3 +36,8 @@ disks: fuel: 100G controller: 100G compute: 100G + +number_cpus: + # Entry is not mandatory! If it is left empty + # the default is 2 cpus per node + controller: 2 diff --git a/deploy/dea.py b/deploy/dea.py index b5b63f7cc..1ac048e06 100644 --- a/deploy/dea.py +++ b/deploy/dea.py @@ -65,9 +65,15 @@ class DeploymentEnvironmentAdapter(object): if node['id'] == node_id and property_name in node: return node[property_name] - def get_node_role(self, node_id): + def get_node_roles(self, node_id): return self.get_node_property(node_id, 'role') + def get_node_main_role(self, node_id, fuel_node_id): + if node_id == fuel_node_id: + return 'fuel' + roles = self.get_node_roles(node_id) + return 'controller' if 'controller' in roles else 'compute' + def get_node_ids(self): node_ids = [] for node in self.dea_struct['nodes']: diff --git a/deploy/dha_adapters/hardware_adapter.py b/deploy/dha_adapters/hardware_adapter.py index 2cd5ab842..55bb4002e 100644 --- a/deploy/dha_adapters/hardware_adapter.py +++ b/deploy/dha_adapters/hardware_adapter.py @@ -58,3 +58,8 @@ class HardwareAdapter(object): def get_disks(self): return self.dha_struct['disks'] + + def get_number_cpus(self, role): + role_cpus_dict = self.dha_struct.get('number_cpus') + if role_cpus_dict: + return role_cpus_dict.get(role) diff --git a/deploy/environments/execution_environment.py b/deploy/environments/execution_environment.py index 38e5bcdf7..c2e7a0b23 100644 --- a/deploy/environments/execution_environment.py +++ b/deploy/environments/execution_environment.py @@ -50,7 +50,7 @@ class ExecutionEnvironment(object): for file in disk_files: delete(file) - def define_vm(self, vm_name, temp_vm_file, disk_path): + def define_vm(self, vm_name, temp_vm_file, disk_path, number_cpus): log('Creating VM %s with disks %s' % (vm_name, disk_path)) with open(temp_vm_file) as f: vm_xml = etree.parse(f) @@ -60,10 +60,14 @@ class ExecutionEnvironment(object): uuids = vm_xml.xpath('/domain/uuid') for uuid in uuids: uuid.getparent().remove(uuid) + if number_cpus: + vcpus = vm_xml.xpath('/domain/vcpu') + for vcpu in vcpus: + vcpu.text = str(number_cpus) disks = vm_xml.xpath('/domain/devices/disk') for disk in disks: if (disk.get('type') == 'file' and - disk.get('device') == 'disk'): + disk.get('device') == 'disk'): sources = disk.xpath('source') for source in sources: disk.remove(source) diff --git a/deploy/environments/libvirt_environment.py b/deploy/environments/libvirt_environment.py index 2a09117bc..380262c7e 100644 --- a/deploy/environments/libvirt_environment.py +++ b/deploy/environments/libvirt_environment.py @@ -34,12 +34,8 @@ class LibvirtEnvironment(ExecutionEnvironment): self.net_names = self.collect_net_names() def create_storage(self, node_id, disk_path, disk_sizes): - if node_id == self.fuel_node_id: - disk_size = disk_sizes['fuel'] - else: - roles = self.dea.get_node_role(node_id) - role = 'controller' if 'controller' in roles else 'compute' - disk_size = disk_sizes[role] + role = self.dea.get_node_main_role(node_id, self.fuel_node_id) + disk_size = disk_sizes[role] exec_cmd('qemu-img create -f qcow2 %s %s' % (disk_path, disk_size)) def create_vms(self): @@ -53,9 +49,11 @@ class LibvirtEnvironment(ExecutionEnvironment): check_file_exists(vm_template) disk_path = '%s/%s.raw' % (self.storage_dir, vm_name) self.create_storage(node_id, disk_path, disk_sizes) + number_cpus = self.dha.get_number_cpus( + self.dea.get_node_main_role(node_id, self.fuel_node_id)) temp_vm_file = '%s/%s' % (temp_dir, vm_name) exec_cmd('cp %s %s' % (vm_template, temp_vm_file)) - self.define_vm(vm_name, temp_vm_file, disk_path) + self.define_vm(vm_name, temp_vm_file, disk_path, number_cpus) delete(temp_dir) def start_vms(self): diff --git a/deploy/environments/virtual_fuel.py b/deploy/environments/virtual_fuel.py index 0e7f27365..62082185f 100644 --- a/deploy/environments/virtual_fuel.py +++ b/deploy/environments/virtual_fuel.py @@ -55,11 +55,12 @@ class VirtualFuel(ExecutionEnvironment): disk_path = '%s/%s.raw' % (self.storage_dir, vm_name) disk_sizes = self.dha.get_disks() disk_size = disk_sizes['fuel'] + number_cpus = self.dha.get_number_cpus('fuel') exec_cmd('qemu-img create -f qcow2 %s %s' % (disk_path, disk_size)) temp_vm_file = '%s/%s' % (temp_dir, vm_name) exec_cmd('cp %s %s' % (vm_template, temp_vm_file)) self.set_vm_nic(temp_vm_file) - self.define_vm(vm_name, temp_vm_file, disk_path) + self.define_vm(vm_name, temp_vm_file, disk_path, number_cpus) delete(temp_dir) def setup_environment(self): diff --git a/prototypes/sfc_tacker/poc.tacker-up.sh b/prototypes/sfc_tacker/poc.tacker-up.sh index f7c9e1165..be647b409 100755 --- a/prototypes/sfc_tacker/poc.tacker-up.sh +++ b/prototypes/sfc_tacker/poc.tacker-up.sh @@ -23,9 +23,9 @@ MYREPO="tacker-server" CLIREPO="tacker-client" DEPREPO="jsonrpclib" -CLIENT="python-python-tackerclient_0.0.1~dev48-1_all.deb" -JSONRPC="python-jsonrpclib_0.1.7-1_all.deb" -SERVER="python-tacker_2014.2.0~dev177-1_all.deb" +CLIENT=$(echo python-python-tackerclient_*_all.deb) +JSONRPC=$(echo python-jsonrpclib_*_all.deb) +SERVER=$(echo python-tacker_*_all.deb) # Function checks whether crudini is available, if not - installs function chkCrudini () { @@ -74,6 +74,7 @@ function deployJsonrpclib () { dpkg --purge python-jsonrpclib python setup.py --command-packages=stdeb.command bdist_deb cd "deb_dist" + JSONRPC=$(echo python-jsonrpclib_*_all.deb) cp $JSONRPC $MYDIR dpkg -i $JSONRPC } @@ -117,6 +118,9 @@ EOFSCP # Function corrects and installs the Tacker-server debian package function blessPackage () { + pushd "${MYDIR}/${MYREPO}/deb_dist" + SERVER=$(echo python-tacker_*_all.deb) + popd DEBFILE="${MYDIR}/${MYREPO}/deb_dist/${SERVER}" TMPDIR=$(mktemp -d /tmp/deb.XXXXXX) || exit 1 OUTPUT=$(basename "$DEBFILE") @@ -144,9 +148,9 @@ diff -ruN a/DEBIAN/control b/DEBIAN/control EOFDC cd "$MYDIR" echo "Patching deb..." - dpkg -b "$TMPDIR" "${MYDIR}/${OUTPUT}" + dpkg -b "$TMPDIR" "${MYDIR}/${SERVER}" rm -r "$TMPDIR" - dpkg -i "${MYDIR}/${OUTPUT}" + dpkg -i "${MYDIR}/${SERVER}" } # Function deploys Tacker-server (installs missing mandatory files: upstart, default) @@ -212,8 +216,9 @@ function deployTackerClient() { cd $CLIREPO python setup.py --command-packages=stdeb.command bdist_deb cd "deb_dist" + CLIENT=$(echo python-python-tackerclient_*_all.deb) cp $CLIENT $MYDIR - dpkg -i $CLIENT + dpkg -i "${MYDIR}/${CLIENT}" } # Function removes the cloned git repositories @@ -297,11 +302,6 @@ function orchestarte () { class { 'tacker::db::mysql': password => '${myPassword}', - dbname => 'tacker', - user => 'tacker', - host => '127.0.0.1', - charset => 'utf8', - collate => 'utf8_general_ci', allowed_hosts => ${allowed_hosts}, } @@ -324,11 +324,12 @@ export OS_NO_CACHE='true' export OS_TENANT_NAME='${service_tenant}' export OS_PROJECT_NAME='${service_tenant}' export OS_USERNAME='tacker' -export OS_PASSWORD='tacker' +export OS_PASSWORD='${myPassword}' export OS_AUTH_URL='${auth_uri}' export OS_DEFAULT_DOMAIN='default' export OS_AUTH_STRATEGY='keystone' -export OS_REGION_NAME='RegionOne' +export OS_REGION_NAME='${myRegion}' +export TACKER_ENDPOINT_TYPE='internalURL' EOFRC chmod +x tackerc } |