Skip to content

Commit

Permalink
Added Storage HA support
Browse files Browse the repository at this point in the history
Closes-Bug: #1366216
Feature: Storage HA support added over existing contrail HA nodes.
Change:
1. cinder backend rbd settngs done for openstack storage nodes.
2. cinder template config set to cinder HA vip.
3. global public_network set to newly added storage node address.
4. new cursh map is loaded using crushtool.
5. cinder rabbit host settings done for openstack storage nodes.
6. skipped compute-restart on openstack storage nodes.
7. added rabbit_port for cinder ha.

Test: verified storage HA by adding 2 openstack storage nodes on
      storage-master role. HA Cinder volume properly attached to
      VMs.

Change done based on Review comments:
1. removed tabs in storage-ceph-storage.py
2. grep -w added to match exact wip address
3. "storage os" comment changed to "storage openstack"
4. "cfg-hostlist" changed to "config-hosts" as per convention
5. added comments for new parameters
6. changed virsh secret list parsing logic

Change-Id: Ibb3d488202bd84efaa14575542a4aae4a896e57a
  • Loading branch information
spuru committed Oct 30, 2014
1 parent deb9c40 commit 7252bad
Show file tree
Hide file tree
Showing 4 changed files with 162 additions and 13 deletions.
9 changes: 9 additions & 0 deletions contrail_provisioning/storage/compute/livemigration.py
Expand Up @@ -33,6 +33,13 @@ def __init__(self, args_str = None):
LIBVIRTD_TMP_BIN_CONF='/tmp/libvirtd.tmp'

for hostname, entries, entry_token in zip(self._args.storage_hostnames, self._args.storage_hosts, self._args.storage_host_tokens):
isos= 0
for os_entries in self._args.storage_os_hosts:
if os_entries == entries:
isos = 1
break
if isos == 1:
continue
if entries != self._args.storage_master:
with settings(host_string = 'root@%s' %(entries), password = entry_token):
if self._args.add_storage_node:
Expand Down Expand Up @@ -99,6 +106,8 @@ def _parse_args(self, args_str):
parser.add_argument("--storage-host-tokens", help = "Passwords of storage nodes", nargs='+', type=str)
parser.add_argument("--add-storage-node", help = "Add a new storage node")
parser.add_argument("--storage-setup-mode", help = "Storage configuration mode")
parser.add_argument("--storage-os-hosts", help = "storage openstack host list", nargs='+', type=str)
parser.add_argument("--storage-os-host-tokens", help = "storage openstack host pass list", nargs='+', type=str)

self._args = parser.parse_args(remaining_argv)

Expand Down
15 changes: 15 additions & 0 deletions contrail_provisioning/storage/setup.py
Expand Up @@ -58,6 +58,10 @@ def parse_args(self, args_str):
parser.add_argument("--collector-hosts", help = "IP Addresses of collector nodes", nargs='+', type=str)
parser.add_argument("--collector-host-tokens", help = "Passwords of collector nodes", nargs='+', type=str)
parser.add_argument("--cfg-host", help = "IP Address of config node")
parser.add_argument("--cinder-vip", help = "Cinder vip")
parser.add_argument("--config-hosts", help = "config host list", nargs='+', type=str)
parser.add_argument("--storage-os-hosts", help = "storage openstack host list", nargs='+', type=str)
parser.add_argument("--storage-os-host-tokens", help = "storage openstack host pass list", nargs='+', type=str)
parser.add_argument("--add-storage-node", help = "Add a new storage node to the existing cluster")
parser.add_argument("--storage-setup-mode", help = "Configuration mode")

Expand Down Expand Up @@ -97,6 +101,17 @@ def enable_storage(self):
for storage_host, storage_host_token in zip(self._args.storage_hosts, self._args.storage_host_tokens):
if storage_host == self._args.storage_master:
storage_master_passwd = storage_host_token

if self._args.cinder_vip:
storage_setup_args = storage_setup_args + " --cinder-vip %s" %(self._args.cinder_vip)

if self._args.config_hosts:
storage_setup_args = storage_setup_args + " --config-hosts %s" %(' '.join(self._args.config_hosts))

if self._args.storage_os_hosts:
storage_setup_args = storage_setup_args + " --storage-os-hosts %s" %(' '.join(self._args.storage_os_hosts))
storage_setup_args = storage_setup_args + " --storage-os-host-tokens %s" %(' '.join(self._args.storage_os_host_tokens))
#Setup storage if storage is defined in testbed.py
with settings(host_string=self._args.storage_master, password=storage_master_passwd):
run("sudo storage-fs-setup %s" %(storage_setup_args))

Expand Down
1 change: 1 addition & 0 deletions contrail_provisioning/storage/storagefs/commonport.py
@@ -1,2 +1,3 @@
# syslog port configured in collector config
SYSLOG_LOGPORT = 4514
RABBIT_PORT = 5673

0 comments on commit 7252bad

Please sign in to comment.