ok

Mini Shell

Direktori : /var/opt/nydus/ops/customer_local_ops/control_panel/
Upload File :
Current File : //var/opt/nydus/ops/customer_local_ops/control_panel/ispconfig.py

# -*- coding: utf-8 -*-
from typing import Dict, Any, Tuple

import logging

from customer_local_ops import Ops, OpType

LOG = logging.getLogger(__name__)


class OSISPConfig:
    """Mixin class representing common functionality and constants for ISPConfig between all OSes"""


class ISPConfig(Ops):
    op_type = OpType.CONTROL_PANEL
    os_op_instance = None

    def change_hostname(self, payload: Dict[str, Any], *args: Any) -> Any:
        """Changes the server hostname via an op for the local operating system and an op for ispconfig

        :param payload: A dict containing input data
        """
        LOG.info("ISPConfig.change_hostname start")
        os_op = payload["os_op"]
        op_name = 'change_hostname'

        if self.os_op_instance is None:
            self.os_op_instance = self.get_os_op(os_op)

        LOG.info("ISPConfig.change_hostname deferring to OS operation: %s.%s", str(
            os_op), op_name)
        success, os_result = self._change_os_hostname(payload)
        if not success:
            return self.build_result_from_other_result((success, os_result), op_name)

        LOG.info("Change the hostname in ISPConfig.")
        self.os_op_instance.change_ispconfig_hostname(payload)
        return True, self.build_result_dict('hostname changed successfully', '', op_name)

    def _change_os_hostname(self, payload: Dict[str, Any]) -> Tuple[bool, Any]:
        """Changes the server hostname via an op for the local operating system

        :param payload: A dict containing input data
        """
        os_result = self.os_op_instance.change_hostname(payload)
        data = self.get_result_data(os_result)
        LOG.info("ISPConfig.change_hostname os_op_result - %s  - %s - %s", data.success, data.outs, data.errs)
        return data.as_tuple()

    def change_password(self, payload: Dict[str, Any], *args: Any) -> Any:
        """Changes the user password via an op for the local operating system and an op for ispconfig

        :param payload: A dict containing input data
        """
        LOG.info("ISPConfig.change_password start")
        os_op = payload["os_op"]
        op_name = 'change_password'
        LOG.info("ISPConfig.change_password deferring to OS operation: %s.%s", str(
            os_op), op_name)

        if self.os_op_instance is None:
            self.os_op_instance = self.get_os_op(os_op)

        success, os_result = self._change_os_password(payload)
        if not success:
            return self.build_result_from_other_result((success, os_result), op_name)

        self.os_op_instance.change_ispconfig_password(payload, op_name)
        return True, self.build_result_dict('password changed successfully', '', op_name)

    def _change_os_password(self, payload: Dict[str, Any]) -> Tuple[bool, Any]:
        """Changes the user password via an op for the local operating system

        :param payload: A dict containing input data
        """
        os_result = self.os_op_instance.change_password(payload)

        data = self.get_result_data(os_result)
        LOG.info("ISPConfig.change_password os_op_result - %s  - %s - %s", data.success, data.outs, data.errs)
        return data.as_tuple()

Zerion Mini Shell 1.0