Cluster upgrade extension for Fuel
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

extension.py 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # -*- coding: utf-8 -*-
  2. # Copyright 2015 Mirantis, Inc.
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License"); you may
  5. # not use this file except in compliance with the License. You may obtain
  6. # a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. # License for the specific language governing permissions and limitations
  14. # under the License.
  15. import os
  16. from nailgun import extensions
  17. from cluster_upgrade import handlers
  18. class UpgradePipeline(extensions.BasePipeline):
  19. @classmethod
  20. def process_deployment_for_cluster(cls, cluster, cluster_data):
  21. from cluster_upgrade.objects.relations import UpgradeRelationObject
  22. relation = UpgradeRelationObject.get_cluster_relation(cluster.id)
  23. cluster_data['upgrade'] = {
  24. 'relation_info': {
  25. 'orig_cluster_id': relation.orig_cluster_id,
  26. 'seed_cluster_id': relation.seed_cluster_id,
  27. }
  28. }
  29. class ClusterUpgradeExtension(extensions.BaseExtension):
  30. name = 'cluster_upgrade'
  31. version = '0.0.1'
  32. description = "Cluster Upgrade Extension"
  33. data_pipelines = [
  34. UpgradePipeline,
  35. ]
  36. urls = [
  37. {'uri': r'/clusters/(?P<cluster_id>\d+)/upgrade/clone/?$',
  38. 'handler': handlers.ClusterUpgradeCloneHandler},
  39. {'uri': r'/clusters/(?P<cluster_id>\d+)/upgrade/assign/?$',
  40. 'handler': handlers.NodeReassignHandler},
  41. {'uri': r'/clusters/(?P<cluster_id>\d+)/upgrade/vips/?$',
  42. 'handler': handlers.CopyVIPsHandler},
  43. {'uri': r'/clusters/(?P<cluster_id>\d+)/upgrade/clone_release/'
  44. r'(?P<release_id>\d+)/?$',
  45. 'handler': handlers.CreateUpgradeReleaseHandler},
  46. ]
  47. @classmethod
  48. def alembic_migrations_path(cls):
  49. return os.path.join(os.path.dirname(__file__),
  50. 'alembic_migrations', 'migrations')
  51. @classmethod
  52. def on_cluster_delete(cls, cluster):
  53. from .objects import relations
  54. relations.UpgradeRelationObject.delete_relation(cluster.id)