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.
calculate-utils-3-update/pym/builder/wsdl_builder.py

346 lines
18 KiB

#-*- coding: utf-8 -*-
# Copyright 2015 Calculate Ltd. http://www.calculate-linux.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
from calculate.lib.datavars import VariableError, DataVarsError, DataVars
from calculate.core.server.func import WsdlBase
from calculate.install.install import InstallError, Install
from calculate.update.emerge_parser import EmergeError
from .builder import Builder
from calculate.update.update import Update, UpdateError
from .datavars import BuilderError
from .variables.action import Actions as BuilderActions
from calculate.lib.utils.portage import GitError
from utils.cl_builder_prepare import ClBuilderPrepareAction
from utils.cl_builder_profile import ClBuilderProfileAction
from utils.cl_builder_break import ClBuilderBreakAction
from utils.cl_builder_update import ClBuilderUpdateAction
from utils.cl_builder_restore import ClBuilderRestoreAction
from utils.cl_builder_image import ClBuilderImageAction
from calculate.lib.cl_lang import setLocalTranslate,getLazyLocalTranslate
setLocalTranslate('cl_builder3',sys.modules[__name__])
__ = getLazyLocalTranslate(_)
class Wsdl(WsdlBase):
methods = [
#
# Подготовить систему для сборки
#
{
# идентификатор метода
'method_name': "builder_prepare",
# категория метода
'category': __('Builder'),
# заголовок метода Подготовить новую сборку
'title': __("Prepare the New Build"),
# иконка для графической консоли
'image': 'starred',
# метод присутствует в графической консоли
'gui': True,
# консольная команда
'command': 'cl-builder-prepare',
# права для запуска метода
'rights': ['build'],
# объект содержащий модули для действия
'logic': {'Builder': Builder,
'Install': Install},
# описание действия
'action': ClBuilderPrepareAction,
# объект переменных
'datavars': "builder",
'native_error': (VariableError, DataVarsError,
InstallError, BuilderError, GitError),
# значения по умолчанию для переменных этого метода
'setvars': {'cl_action!': BuilderActions.Prepare,
'cl_dispatch_conf': 'usenew'},
# описание груп (список лямбда функций)
'groups': [
# Подготовить новую сборку
lambda group: group(_("Prepare the New Build"),
# Исходный образ (Source image)
normal=('cl_builder_source_filename',
# Место сборки
# (Build location)
'cl_builder_disk_dev',),
# Идентификатор сборки (Build ID)
expert=(# Использовать слои для сборки
# Use layers for build
'cl_builder_layered_set',
'cl_builder_new_id',
'cl_templates_locate',
'cl_verbose_set',
'cl_dispatch_conf'),
hide=('cl_templates_locate',
'cl_verbose_set',
'cl_builder_new_id',
'cl_dispatch_conf'),
brief=('cl_builder_source_filename',
'cl_builder_profile_name',
'cl_builder_disk_dev',
'cl_builder_new_id',
'cl_builder_layered_set',
'cl_builder_disk_size',
),
next_label=_("Next"))],
'brief': {'next': __("Perform"),
'name': __("Prepare the New Build")},
},
{
# идентификатор метода
'method_name': "builder_break",
# категория метода
'category': __('Builder'),
# заголовок метода
'title': __("Break the Build"),
# иконка для графической консоли
'image': 'edit-clear',
# метод присутствует в графической консоли
'gui': True,
# консольная команда
'command': 'cl-builder-break',
# права для запуска метода
'rights': ['build'],
# объект содержащий модули для действия
'logic': {'Builder': Builder,
'Install': Install},
# описание действия
'action': ClBuilderBreakAction,
# объект переменных
'datavars': "builder",
'native_error': (VariableError, DataVarsError,
InstallError, BuilderError, GitError),
# значения по умолчанию для переменных этого метода
'setvars': {'cl_action!': BuilderActions.Break},
# описание груп (список лямбда функций)
'groups': [
lambda group: group(_("Break the Build"),
normal=('cl_builder_prepared_id',
'cl_builder_clear_set'),
next_label=_("Perform"))]
},
{
# идентификатор метода
'method_name': "builder_update",
# категория метода
'category': __('Builder'),
# заголовок метода
'title': __("Update the Build"),
# иконка для графической консоли
'image': 'software-update-available',
# метод присутствует в графической консоли
'gui': True,
# консольная команда
'command': 'cl-builder-update',
# права для запуска метода
'rights': ['build'],
# объект содержащий модули для действия
'logic': {'Builder': Builder,
'Install': Install},
# описание действия
'action': ClBuilderUpdateAction,
# объект переменных
'datavars': "builder",
'native_error': (VariableError, DataVarsError,
InstallError, BuilderError, GitError),
# значения по умолчанию для переменных этого метода
'setvars': {'cl_action!': BuilderActions.Update,
'cl_dispatch_conf': 'usenew'},
# описание груп (список лямбда функций)
'groups': [
lambda group: group(
_("Update the Build"),
normal=('cl_builder_prepared_id',),
expert=(
'update.cl_update_sync_only_set',
'update.cl_update_other_set',
'update.cl_update_pretend_set',
'cl_builder_sync_rep',
'update.cl_update_emergelist_set',
'update.cl_update_world',
'update.cl_update_egencache_force',
'update.cl_update_eixupdate_force',
'cl_builder_rebuild_changed_set',
'update.cl_update_skip_rb_set',
'update.cl_update_binhost_recheck_set',
'update.cl_update_cleanpkg_set',
'cl_builder_branch_data',
'cl_templates_locate',
'cl_verbose_set',
'cl_dispatch_conf'),
next_label=_("Next"))],
'brief': {'next': __("Perform"),
'name': __("Update the Build")}
},
{
# идентификатор метода
'method_name': "builder_restore",
# категория метода
'category': __('Builder'),
# заголовок метода
'title': __("Restore the Build"),
# иконка для графической консоли
'image': 'non-starred',
# метод присутствует в графической консоли
'gui': True,
# консольная команда
'command': 'cl-builder-restore',
# права для запуска метода
'rights': ['build'],
# объект содержащий модули для действия
'logic': {'Builder': Builder,
'Install': Install},
# описание действия
'action': ClBuilderRestoreAction,
# объект переменных
'datavars': "builder",
'native_error': (VariableError, DataVarsError,
InstallError, BuilderError, GitError),
# значения по умолчанию для переменных этого метода
'setvars': {'cl_action!': BuilderActions.Restore},
# описание груп (список лямбда функций)
'groups': [
lambda group: group(_("Break the Build"),
normal=('cl_builder_broken_id',),
expert=('cl_templates_locate',
'cl_verbose_set', 'cl_dispatch_conf'),
next_label=_("Perform"))],
},
{
# идентификатор метода
'method_name': "builder_image",
# категория метода
'category': __('Builder'),
# заголовок метода
'title': __("Create the Image"),
# иконка для графической консоли
'image': 'media-optical',
# метод присутствует в графической консоли
'gui': True,
# консольная команда
'command': 'cl-builder-image',
# права для запуска метода
'rights': ['build'],
# объект содержащий модули для действия
'logic': {'Builder': Builder,
'Install': Install},
# описание действия
'action': ClBuilderImageAction,
# объект переменных
'datavars': "builder",
'native_error': (VariableError, DataVarsError, EmergeError,
InstallError, BuilderError, GitError),
# значения по умолчанию для переменных этого метода
'setvars': {'cl_action!': BuilderActions.Image,
'cl_dispatch_conf': 'usenew'},
# описание груп (список лямбда функций)
'groups': [
lambda group: group(_("Create the Image"),
normal=('cl_builder_prepared_id',
'cl_builder_image_filename',
),
brief=('cl_builder_prepared_id',
'os_builder_linux_fullname',
'os_builder_linux_shortname',
'os_builder_linux_subname',
'os_builder_linux_system',
'os_builder_linux_ver',
'os_builder_linux_build',
'cl_builder_image_filename',
'cl_builder_videodrv_set',
'cl_builder_compress',
'cl_builder_isohybrid_set',
'cl_builder_keep_tree_set',
'cl_builder_prelink_set',
'cl_builder_prepare_free_size',
'cl_builder_image_free_size'
),
hide=('cl_templates_locate',
'cl_verbose_set',
'cl_dispatch_conf'
),
expert=(
# Включить проприетарные видео драйвера
# Include proprietary video drivers
'cl_builder_videodrv_set',
'cl_builder_compress',
'cl_builder_keep_tree_set',
'cl_builder_isohybrid_set',
'cl_builder_prelink_set',
'cl_templates_locate',
'cl_verbose_set',
'cl_dispatch_conf'),
next_label=_("Next")),],
'brief': {'next': __("Perform"),
'name': __("Create the Image")}
},
#
# Сменить профиль
#
{
# идентификатор метода
'method_name': "builder_profile",
# категория метода
'category': __('Builder'),
# заголовок метода
'title': __("Change the Build Profile"),
# иконка для графической консоли
'image': 'notification-display-brightness-full,gtk-dialog-info',
# метод присутствует в графической консоли
'gui': True,
# консольная команда
'command': 'cl-builder-profile',
# права для запуска метода
'rights': ['builder'],
# объект содержащий модули для действия
'logic': {'Builder': Builder},
# описание действия
'action': ClBuilderProfileAction,
# объект переменных
'datavars': "builder",
'native_error': (VariableError, DataVarsError, UpdateError,
InstallError, BuilderError, GitError),
# значения по умолчанию для переменных этого метода
'setvars': {'cl_action!': BuilderActions.ChangeProfile,
'update.cl_update_world': 'rebuild'},
# описание груп (список лямбда функций)
'groups': [
lambda group: group(_("Repository"),
brief=('cl_builder_profile_repo_name',),
hide=('cl_builder_profile_url',
'update.cl_update_profile_sync_set'),
normal=('cl_builder_prepared_id',
'cl_builder_profile_url',),
expert=('update.cl_update_profile_sync_set',)),
lambda group: group(_("Profile"),
normal=('cl_builder_profile_system_shortname',
'update.cl_update_world'),
expert=('update.cl_update_skip_setup_set',
'cl_builder_templates_locate',
'cl_verbose_set',
'cl_dispatch_conf'),
hide=('cl_builder_templates_locate',
'cl_verbose_set',
'cl_dispatch_conf'),
brief=('cl_builder_profile_linux_fullname',
'cl_builder_profile_depend_data')
)],
'brief': {'next': __("Perform"),
'name': __("Set the Profile")}},
]