fs: object,
log: object,
loop: object,
- url: str,
- username: str,
- vca_config: dict,
on_update_db=None,
**kwargs,
):
FsBase)
:param object log: the logging object to log to
:param object loop: the loop to use for asyncio (default current thread loop)
- :param str url: a string that how to connect to the VCA (if needed, IP and port
- can be obtained from there)
- :param str username: the username to authenticate with VCA
- :param dict vca_config: Additional parameters for the specific VCA. For example,
- for juju it will contain:
- secret: The password to authenticate with
- public_key: The contents of the juju public SSH key
- ca_cert str: The CA certificate used to authenticate
:param on_update_db: callback called when n2vc connector updates database.
Received arguments:
table: e.g. "nsrs"
if fs is None:
raise N2VCBadArgumentsException("Argument fs is mandatory", ["fs"])
- self.log.info(
- "url={}, username={}, vca_config={}".format(
- url,
- username,
- {
- k: v
- for k, v in vca_config.items()
- if k
- not in ("host", "port", "user", "secret", "public_key", "ca_cert")
- },
- )
- )
-
# store arguments into self
self.db = db
self.fs = fs
self.loop = loop or asyncio.get_event_loop()
- self.url = url
- self.username = username
- self.vca_config = vca_config
self.on_update_db = on_update_db
# generate private/public key-pair
# TODO
@abc.abstractmethod
async def remove_relation(self):
- """
- """
+ """ """
# TODO
@abc.abstractmethod
async def deregister_execution_environments(self):
- """
- """
+ """ """
@abc.abstractmethod
async def delete_namespace(
:param float total_timeout:
"""
+ @abc.abstractmethod
+ async def upgrade_charm(
+ self,
+ ee_id: str = None,
+ path: str = None,
+ charm_id: str = None,
+ charm_type: str = None,
+ timeout: float = None,
+ ) -> str:
+ """This method upgrade charms in VNFs
+
+ Args:
+ ee_id: Execution environment id
+ path: Local path to the charm
+ charm_id: charm-id
+ charm_type: Charm type can be lxc-proxy-charm, native-charm or k8s-proxy-charm
+ timeout: (Float) Timeout for the ns update operation
+
+ Returns:
+ The output of the update operation if status equals to "completed"
+ """
+
@abc.abstractmethod
async def exec_primitive(
self,
detailed_status: str,
vca_status: str,
entity_type: str,
+ vca_id: str = None,
):
+ """
+ Write application status to database
+
+ :param: db_dict: DB dictionary
+ :param: status: Status of the application
+ :param: detailed_status: Detailed status
+ :param: vca_status: VCA status
+ :param: entity_type: Entity type ("application", "machine, and "action")
+ :param: vca_id: Id of the VCA. If None, the default VCA will be used.
+ """
if not db_dict:
self.log.debug("No db_dict => No database write")
return
if self.on_update_db:
if asyncio.iscoroutinefunction(self.on_update_db):
await self.on_update_db(
- the_table, the_filter, the_path, update_dict
+ the_table, the_filter, the_path, update_dict, vca_id=vca_id
)
else:
- self.on_update_db(the_table, the_filter, the_path, update_dict)
+ self.on_update_db(
+ the_table, the_filter, the_path, update_dict, vca_id=vca_id
+ )
except DbException as e:
if e.http_code == HTTPStatus.NOT_FOUND: