Merge "Move partition info transformation to extension"
This commit is contained in:
commit
f4bf5159dd
|
@ -14,6 +14,7 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from nailgun.extensions.volume_manager import extension as volume_ext
|
||||||
from nailgun import objects
|
from nailgun import objects
|
||||||
|
|
||||||
|
|
||||||
|
@ -208,6 +209,14 @@ class NailgunNodeAdapter(object):
|
||||||
def add_pending_change(self, change):
|
def add_pending_change(self, change):
|
||||||
objects.Node.add_pending_change(self.node, change)
|
objects.Node.add_pending_change(self.node, change)
|
||||||
|
|
||||||
|
def get_volumes(self):
|
||||||
|
return volume_ext.VolumeManagerExtension.get_node_volumes(self.node)
|
||||||
|
|
||||||
|
def set_volumes(self, volumes):
|
||||||
|
return volume_ext.VolumeManagerExtension.set_node_volumes(
|
||||||
|
self.node, volumes
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NailgunNetworkGroupAdapter(object):
|
class NailgunNetworkGroupAdapter(object):
|
||||||
|
|
||||||
|
|
|
@ -64,8 +64,8 @@ class Manager(object):
|
||||||
def apply(self, from_version, to_version, data):
|
def apply(self, from_version, to_version, data):
|
||||||
strict_from = distutils.version.StrictVersion(from_version)
|
strict_from = distutils.version.StrictVersion(from_version)
|
||||||
strict_to = distutils.version.StrictVersion(to_version)
|
strict_to = distutils.version.StrictVersion(to_version)
|
||||||
assert strict_from < strict_to, \
|
assert strict_from <= strict_to, \
|
||||||
"from_version must be smaller than to_version"
|
"from_version must not be greater than to_version"
|
||||||
data = copy.deepcopy(data)
|
data = copy.deepcopy(data)
|
||||||
for version, transformers in self.transformers:
|
for version, transformers in self.transformers:
|
||||||
if version <= strict_from:
|
if version <= strict_from:
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from cluster_upgrade import transformations
|
||||||
|
|
||||||
|
|
||||||
|
def transform_node_volumes(volumes):
|
||||||
|
try:
|
||||||
|
os_vg = next(vol for vol in volumes
|
||||||
|
if 'id' in vol and vol['id'] == 'os')
|
||||||
|
except StopIteration:
|
||||||
|
return volumes
|
||||||
|
|
||||||
|
other_volumes = [vol for vol in volumes
|
||||||
|
if 'id' not in vol or vol['id'] != 'os']
|
||||||
|
|
||||||
|
for disk in other_volumes:
|
||||||
|
disk_volumes = disk['volumes']
|
||||||
|
disk['volumes'] = []
|
||||||
|
|
||||||
|
for v in disk_volumes:
|
||||||
|
if v['type'] == 'pv' and v['vg'] == 'os' and v['size'] > 0:
|
||||||
|
for vv in os_vg['volumes']:
|
||||||
|
partition = {'name': vv['name'],
|
||||||
|
'size': vv['size'],
|
||||||
|
'type': 'partition',
|
||||||
|
'mount': vv['mount'],
|
||||||
|
'file_system': vv['file_system']}
|
||||||
|
disk['volumes'].append(partition)
|
||||||
|
else:
|
||||||
|
if v['type'] == 'lvm_meta_pool' or v['type'] == 'boot':
|
||||||
|
v['size'] = 0
|
||||||
|
disk['volumes'].append(v)
|
||||||
|
|
||||||
|
return volumes
|
||||||
|
|
||||||
|
|
||||||
|
class Manager(transformations.Manager):
|
||||||
|
default_config = {
|
||||||
|
'6.1': ['node_volumes']
|
||||||
|
}
|
||||||
|
name = 'volumes'
|
|
@ -28,6 +28,7 @@ from nailgun import utils
|
||||||
from . import transformations # That's weird, but that's how hacking likes
|
from . import transformations # That's weird, but that's how hacking likes
|
||||||
from .objects import adapters
|
from .objects import adapters
|
||||||
from .transformations import cluster as cluster_trs
|
from .transformations import cluster as cluster_trs
|
||||||
|
from .transformations import volumes as volumes_trs
|
||||||
|
|
||||||
|
|
||||||
def merge_attributes(a, b):
|
def merge_attributes(a, b):
|
||||||
|
@ -75,6 +76,7 @@ class UpgradeHelper(object):
|
||||||
network_configuration.NovaNetworkConfigurationSerializer,
|
network_configuration.NovaNetworkConfigurationSerializer,
|
||||||
}
|
}
|
||||||
cluster_transformations = transformations.Lazy(cluster_trs.Manager)
|
cluster_transformations = transformations.Lazy(cluster_trs.Manager)
|
||||||
|
volumes_transformations = transformations.Lazy(volumes_trs.Manager)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def clone_cluster(cls, orig_cluster, data):
|
def clone_cluster(cls, orig_cluster, data):
|
||||||
|
@ -215,6 +217,13 @@ class UpgradeHelper(object):
|
||||||
orig_cluster = adapters.NailgunClusterAdapter.get_by_uid(
|
orig_cluster = adapters.NailgunClusterAdapter.get_by_uid(
|
||||||
node.cluster_id)
|
node.cluster_id)
|
||||||
|
|
||||||
|
volumes = cls.volumes_transformations.apply(
|
||||||
|
orig_cluster.release.environment_version,
|
||||||
|
seed_cluster.release.environment_version,
|
||||||
|
node.get_volumes(),
|
||||||
|
)
|
||||||
|
node.set_volumes(volumes)
|
||||||
|
|
||||||
orig_manager = orig_cluster.get_network_manager()
|
orig_manager = orig_cluster.get_network_manager()
|
||||||
|
|
||||||
netgroups_id_mapping = cls.get_netgroups_id_mapping(
|
netgroups_id_mapping = cls.get_netgroups_id_mapping(
|
||||||
|
|
|
@ -25,6 +25,8 @@ packages =
|
||||||
[entry_points]
|
[entry_points]
|
||||||
nailgun.extensions =
|
nailgun.extensions =
|
||||||
cluster_upgrade = cluster_upgrade.extension:ClusterUpgradeExtension
|
cluster_upgrade = cluster_upgrade.extension:ClusterUpgradeExtension
|
||||||
|
nailgun.cluster_upgrade.transformations.volumes.6.1 =
|
||||||
|
node_volumes = cluster_upgrade.transformations.volumes:transform_node_volumes
|
||||||
nailgun.cluster_upgrade.transformations.cluster.9.0 =
|
nailgun.cluster_upgrade.transformations.cluster.9.0 =
|
||||||
dns_list = cluster_upgrade.transformations.cluster:transform_dns_list
|
dns_list = cluster_upgrade.transformations.cluster:transform_dns_list
|
||||||
ntp_list = cluster_upgrade.transformations.cluster:transform_ntp_list
|
ntp_list = cluster_upgrade.transformations.cluster:transform_ntp_list
|
||||||
|
|
Loading…
Reference in New Issue