Example #1
0
    def extend_hypermetro(self, hypermetro_id, new_size):
        LOG.info('Extend hypermetro pair %s', hypermetro_id)
        metro_info = self.remote_cli.get_hypermetro_by_id(hypermetro_id)
        metrogroup = None
        if metro_info['ISINCG'] == 'true':
            cg_id = metro_info['CGID']
            metrogroup = huawei_utils.get_hypermetro_group(
                self.local_cli, cg_id)

        if metrogroup:
            self._stop_consistencygroup_if_need(metrogroup)
        elif ((metro_info['HEALTHSTATUS'] == constants.METRO_HEALTH_NORMAL)
              and metro_info['RUNNINGSTATUS'] in (
                  constants.METRO_RUNNING_NORMAL,
                  constants.METRO_RUNNING_SYNC)):
            self.local_cli.stop_hypermetro(hypermetro_id)

        try:
            self.remote_cli.extend_lun(metro_info['LOCALOBJID'], new_size)
            self.local_cli.extend_lun(metro_info['REMOTEOBJID'], new_size)
        finally:
            if metrogroup:
                self.local_cli.sync_metrogroup(metrogroup['ID'])
            else:
                self.local_cli.sync_hypermetro(hypermetro_id)
Example #2
0
    def add_hypermetro_to_group(self, group_id, metro_id):
        metrogroup = huawei_utils.get_hypermetro_group(
            self.local_cli, group_id)
        if not metrogroup:
            msg = _('Hypermetro group %s to not exist.') % group_id
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)

        self._stop_consistencygroup_if_need(metrogroup)
        self._stop_hypermetro_if_need(metro_id)
        self.local_cli.add_metro_to_metrogroup(metrogroup['ID'], metro_id)
        self.local_cli.sync_metrogroup(metrogroup['ID'])
Example #3
0
    def delete_consistencygroup(self, group_id, volumes):
        LOG.info("Delete hypermetro consistency group %s.", group_id)

        metrogroup = huawei_utils.get_hypermetro_group(self.local_cli,
                                                       group_id)
        if not metrogroup:
            LOG.warning('Hypermetro group %s to delete not exist.', group_id)
            return

        self._stop_consistencygroup_if_need(metrogroup)
        self._remove_volume_from_metrogroup(volumes, metrogroup['ID'])
        self.local_cli.delete_metrogroup(metrogroup['ID'])
Example #4
0
    def update_consistencygroup(self, group_id, add_volumes, remove_volumes):
        LOG.info("Update hypermetro consistency group %s.", group_id)

        metrogroup = huawei_utils.get_hypermetro_group(
            self.local_cli, group_id)
        if not metrogroup:
            msg = _('Hypermetro group %s to update not exist.') % group_id
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)

        self._stop_consistencygroup_if_need(metrogroup)
        self._add_volume_to_metrogroup(add_volumes, metrogroup['ID'])
        self._remove_volume_from_metrogroup(remove_volumes, metrogroup['ID'])
        self.local_cli.sync_metrogroup(metrogroup['ID'])