Beispiel #1
0
 def __init__(self):
     self._conn = None
     settings = Setting.get_db_settings()
     self.ldap_enable = settings.get("AUTH_LDAP_ENABLE", False)
     if not self.ldap_enable:
         return
     self.bind_dn = settings.get("AUTH_LDAP_BIND_DN")
     self.bind_password = settings.get("AUTH_LDAP_BIND_PASSWORD")
     self.search_ou = settings.get("AUTH_LDAP_SEARCH_OU")
     self.search_filter = settings.get("AUTH_LDAP_SEARCH_FILTER")
     self.server_uri = settings.get("AUTH_LDAP_SERVER_URI")
     self.attr_map = json.loads(settings.get("AUTH_LDAP_USER_ATTR_MAP"))
Beispiel #2
0
 def start(self):
     result = {"raw": {}, "summary": {}}
     pre_deploy_execution_start.send(self.__class__, execution=self)
     cluster = self.get_cluster()
     settings = Setting.get_db_settings()
     extra_vars = {
         "cluster_name": cluster.name,
         "cluster_domain": cluster.cluster_doamin_suffix
     }
     extra_vars.update(settings)
     extra_vars.update(cluster.configs)
     ignore_errors = False
     return_running = False
     message_client = MessageClient()
     message = {
         "item_id": cluster.item_id,
         "title": self.get_operation_name(),
         "content": "",
         "level": "INFO",
         "type": "SYSTEM"
     }
     try:
         if self.operation == "install":
             logger.info(msg="cluster: {} exec: {} ".format(cluster, self.operation))
             cluster.change_status(Cluster.CLUSTER_STATUS_INSTALLING)
             result = self.on_install(extra_vars)
             cluster.change_status(Cluster.CLUSTER_STATUS_RUNNING)
         elif self.operation == 'uninstall':
             logger.info(msg="cluster: {} exec: {} ".format(cluster, self.operation))
             cluster.change_status(Cluster.CLUSTER_STATUS_DELETING)
             result = self.on_uninstall(extra_vars)
             cluster.change_status(Cluster.CLUSTER_STATUS_READY)
             kubeops_api.cluster_monitor.delete_cluster_redis_data(cluster.name)
         elif self.operation == 'bigip-config':
             logger.info(msg="cluster: {} exec: {} ".format(cluster, self.operation))
             ignore_errors = True
             result = self.on_f5_config(extra_vars)
         elif self.operation == 'upgrade':
             logger.info(msg="cluster: {} exec: {} ".format(cluster, self.operation))
             cluster.change_status(Cluster.CLUSTER_STATUS_UPGRADING)
             package_name = self.params.get('package', None)
             package = Package.objects.get(name=package_name)
             extra_vars.update(package.meta.get('vars'))
             result = self.on_upgrade(extra_vars)
             if result.get('summary', {}).get('success', False):
                 cluster.upgrade_package(package_name)
             cluster.change_status(Cluster.CLUSTER_STATUS_RUNNING)
         elif self.operation == 'scale':
             logger.info(msg="cluster: {} exec: {} ".format(cluster, self.operation))
             ignore_errors = True
             return_running = True
             cluster.change_status(Cluster.CLUSTER_DEPLOY_TYPE_SCALING)
             result = self.on_scaling(extra_vars)
             cluster.exit_new_node()
             cluster.change_status(Cluster.CLUSTER_STATUS_RUNNING)
         elif self.operation == 'add-worker':
             logger.info(msg="cluster: {} exec: {} ".format(cluster, self.operation))
             ignore_errors = True
             return_running = True
             cluster.change_status(Cluster.CLUSTER_DEPLOY_TYPE_SCALING)
             result = self.on_add_worker(extra_vars)
             cluster.exit_new_node()
             cluster.change_status(Cluster.CLUSTER_STATUS_RUNNING)
         elif self.operation == 'remove-worker':
             logger.info(msg="cluster: {} exec: {} ".format(cluster, self.operation))
             ignore_errors = True
             return_running = True
             cluster.change_status(Cluster.CLUSTER_DEPLOY_TYPE_SCALING)
             result = self.on_remove_worker(extra_vars)
             if not result.get('summary', {}).get('success', False):
                 cluster.exit_new_node()
             else:
                 node_name = self.params.get('node', None)
                 cluster.change_to()
                 node = Node.objects.get(name=node_name)
                 node.delete()
                 cluster.change_status(Cluster.CLUSTER_STATUS_RUNNING)
         elif self.operation == 'restore':
             logger.info(msg="cluster: {} exec: {} ".format(cluster, self.operation))
             cluster.change_status(Cluster.CLUSTER_STATUS_RESTORING)
             cluster_backup_id = self.params.get('clusterBackupId', None)
             result = self.on_restore(extra_vars, cluster_backup_id)
             cluster.change_status(Cluster.CLUSTER_STATUS_RUNNING)
         elif self.operation == 'backup':
             logger.info(msg="cluster: {} exec: {} ".format(cluster, self.operation))
             cluster.change_status(Cluster.CLUSTER_STATUS_BACKUP)
             cluster_storage_id = self.params.get('backupStorageId', None)
             result = self.on_backup(extra_vars)
             self.on_upload_backup_file(cluster_storage_id)
             cluster.change_status(Cluster.CLUSTER_STATUS_RUNNING)
         if not result.get('summary', {}).get('success', False):
             message['content'] = self.get_content(False)
             message['level'] = 'WARNING'
             if not ignore_errors:
                 cluster.change_status(Cluster.CLUSTER_STATUS_ERROR)
             if return_running:
                 cluster.change_status(Cluster.CLUSTER_STATUS_RUNNING)
             logger.error(msg=":cluster {} exec {} error".format(cluster, self.operation), exc_info=True)
         else:
             message['content'] = self.get_content(True)
         message_client.insert_message(message)
     except Exception as e:
         logger.error(msg=":cluster {} exec {} error".format(cluster, self.operation), exc_info=True)
         cluster.change_status(Cluster.CLUSTER_STATUS_ERROR)
         message['content'] = self.get_content(False)
         message['level'] = 'WARNING'
         message_client.insert_message(message)
     post_deploy_execution_start.send(self.__class__, execution=self, result=result, ignore_errors=ignore_errors)
     return result