This commit is part of the fix for Bug 1007. Previously
The wrong naming was used in the uninstall function and
it was deleting each application one by one. Now the whole
model will be deleted automatically.
This commit is dependent on this one in LCM:
https://osm.etsi.org/gerrit/#/c/osm/LCM/+/8555/
Additionally the naming for models has changes so that
each KDU gets is own model with the following naming:
<kdu-name>-<ns-id> . This will fix multi KDU support.
Change-Id: I912105417d67d5f3d95b997b91d7a5b7388bdf0d
Signed-off-by: Dominik Fleischmann <dominik.fleischmann@canonical.com>
(cherry picked from commit
847f3c055188614da2cd7ea8028db8ab025eb1d8)
atomic: bool = True,
timeout: float = 300,
params: dict = None,
atomic: bool = True,
timeout: float = 300,
params: dict = None,
+ db_dict: dict = None,
+ kdu_name: str = None
):
"""
Deploys of a new KDU instance. It would implicitly rely on the `install` call to deploy the Chart/Bundle
):
"""
Deploys of a new KDU instance. It would implicitly rely on the `install` call to deploy the Chart/Bundle
:param dict db_dict: where to write into database when the status changes.
It contains a dict with {collection: <str>, filter: {}, path: <str>},
e.g. {collection: "nsrs", filter: {_id: <nsd-id>, path: "_admin.deployed.K8S.3"}
:param dict db_dict: where to write into database when the status changes.
It contains a dict with {collection: <str>, filter: {}, path: <str>},
e.g. {collection: "nsrs", filter: {_id: <nsd-id>, path: "_admin.deployed.K8S.3"}
+ :param kdu_name: Name of the KDU instance to be installed
:return: True if successful
"""
:return: True if successful
"""
atomic: bool = True,
timeout: float = 300,
params: dict = None,
atomic: bool = True,
timeout: float = 300,
params: dict = None,
+ db_dict: dict = None,
+ kdu_name: str = None
):
self.debug('installing {} in cluster {}'.format(kdu_model, cluster_uuid))
):
self.debug('installing {} in cluster {}'.format(kdu_model, cluster_uuid))
atomic: bool = True,
timeout: float = 300,
params: dict = None,
atomic: bool = True,
timeout: float = 300,
params: dict = None,
+ db_dict: dict = None,
+ kdu_name: str = None
) -> bool:
"""Install a bundle
) -> bool:
"""Install a bundle
:param timeout int: The time, in seconds, to wait for the install
to finish
:param params dict: Key-value pairs of instantiation parameters
:param timeout int: The time, in seconds, to wait for the install
to finish
:param params dict: Key-value pairs of instantiation parameters
+ :param kdu_name: Name of the KDU instance to be installed
:return: If successful, returns ?
"""
:return: If successful, returns ?
"""
##
# Get or create the model, based on the NS
# uuid.
##
# Get or create the model, based on the NS
# uuid.
- model_name = db_dict["filter"]["_id"]
+ if kdu_name:
+ kdu_instance = "{}-{}".format(kdu_name, db_dict["filter"]["_id"])
+ else:
+ kdu_instance = db_dict["filter"]["_id"]
- self.log.debug("Checking for model named {}".format(model_name))
- model = await self.get_model(model_name, cluster_uuid=cluster_uuid)
+ self.log.debug("Checking for model named {}".format(kdu_instance))
+ model = await self.get_model(kdu_instance, cluster_uuid=cluster_uuid)
if not model:
# Create the new model
if not model:
# Create the new model
- self.log.debug("Adding model: {}".format(model_name))
- model = await self.add_model(model_name, cluster_uuid=cluster_uuid)
+ self.log.debug("Adding model: {}".format(kdu_instance))
+ model = await self.add_model(kdu_instance, cluster_uuid=cluster_uuid)
if model:
# TODO: Instantiation parameters
if model:
# TODO: Instantiation parameters
print("[install] Disconnecting model")
await model.disconnect()
print("[install] Disconnecting model")
await model.disconnect()
raise Exception("Unable to install")
async def instances_list(
raise Exception("Unable to install")
async def instances_list(
async def uninstall(
self,
cluster_uuid: str,
async def uninstall(
self,
cluster_uuid: str,
) -> bool:
"""Uninstall a KDU instance
) -> bool:
"""Uninstall a KDU instance
- :param cluster_uuid str: The UUID of the cluster to uninstall
+ :param cluster_uuid str: The UUID of the cluster
:param kdu_instance str: The unique name of the KDU instance
:return: Returns True if successful, or raises an exception
"""
:param kdu_instance str: The unique name of the KDU instance
:return: Returns True if successful, or raises an exception
"""
+ await self.controller.destroy_models(kdu_instance)
- # Remove an application from the model
- model = await self.get_model(self.get_namespace(cluster_uuid), cluster_uuid=cluster_uuid)
-
- if model:
- # Get the application
- if kdu_instance not in model.applications:
- # TODO: Raise a named exception
- raise Exception("Application not found.")
-
- application = model.applications[kdu_instance]
-
- # Destroy the application
- await application.destroy()
-
- # TODO: Verify removal
-
- removed = True
- return removed
"""Introspection"""
async def inspect_kdu(
"""Introspection"""
async def inspect_kdu(