Package entropy :: Package client :: Package services :: Package system :: Module methods

Source Code for Module entropy.client.services.system.methods

  1  # -*- coding: utf-8 -*- 
  2  ''' 
  3      # DESCRIPTION: 
  4      # Entropy Object Oriented Interface 
  5   
  6      Copyright (C) 2007-2009 Fabio Erculiani 
  7   
  8      This program is free software; you can redistribute it and/or modify 
  9      it under the terms of the GNU General Public License as published by 
 10      the Free Software Foundation; either version 2 of the License, or 
 11      (at your option) any later version. 
 12   
 13      This program is distributed in the hope that it will be useful, 
 14      but WITHOUT ANY WARRANTY; without even the implied warranty of 
 15      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 16      GNU General Public License for more details. 
 17   
 18      You should have received a copy of the GNU General Public License 
 19      along with this program; if not, write to the Free Software 
 20      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 21  ''' 
 22  from __future__ import with_statement 
 23  from entropy.i18n import _ 
 24   
25 -class BaseMixin:
26
27 - def __init__(self, SystemManagerClientInstance):
28 self.Manager = SystemManagerClientInstance 29 self.available_commands = { 30 'get_available_commands': { 31 'desc': _("Get a list of remotely available commands"), 32 'params': [], 33 'call': self.get_available_commands, 34 'private': True, 35 }, 36 'get_queue': { 37 'desc': _("Get current queue content"), 38 'params': [ 39 ('extended',bool,_('Extended results'),False,) 40 ], 41 'call': self.get_queue, 42 'private': True, 43 }, 44 'get_queue_item_by_id': { 45 'desc': _("Get queue item using its queue unique identifier"), 46 'params': [('queue_id',int,_('Queue Identifier'),True,)], 47 'call': self.get_queue_item_by_id, 48 'private': True, 49 }, 50 'get_queue_id_stdout': { 51 'desc': _("Get queue stdout/stderr using its queue unique identifier"), 52 'params': [('queue_id',int,_('Queue Identifier'),True,)], 53 'call': self.get_queue_id_stdout, 54 'private': True, 55 }, 56 'get_queue_id_stdout': { 57 'desc': _("Get queued command result using its queue unique identifier"), 58 'params': [('queue_id',int,_('Queue Identifier'),True,)], 59 'call': self.get_queue_id_result, 60 'private': True, 61 }, 62 'remove_queue_ids': { 63 'desc': _("Remove queued commands using their queue unique identifiers"), 64 'params': [('queue_ids',list,_('Queue Identifiers'),True,)], 65 'call': self.remove_queue_ids, 66 'private': True, 67 }, 68 'pause_queue': { 69 'desc': _("Toggle queue pause (True/False)"), 70 'params': [('do_pause',bool,_('Pause or not'),True,)], 71 'call': self.pause_queue, 72 'private': True, 73 }, 74 'kill_processing_queue_id': { 75 'desc': _("Kill a running process through its queue id"), 76 'params': [('queue_id',int,_('Queue Identifier'),True,)], 77 'call': self.kill_processing_queue_id, 78 'private': True, 79 }, 80 'swap_items_in_queue': { 81 'desc': _("Swap items in queue using their queue ids"), 82 'params': [ 83 ('queue_id1',int,_('Queue Identifier'),True,), 84 ('queue_id2',int,_('Queue Identifier'),True,) 85 ], 86 'call': self.swap_items_in_queue, 87 'private': True, 88 }, 89 'get_pinboard_data': { 90 'desc': _("Get pinboard content"), 91 'params': [], 92 'call': self.get_pinboard_data, 93 'private': True, 94 }, 95 'add_to_pinboard': { 96 'desc': _("Add item to pinboard"), 97 'params': [ 98 ('note',basestring,_('Note'),True,), 99 ('extended_text',basestring,_('Extended text'),True,) 100 ], 101 'call': self.add_to_pinboard, 102 'private': True, 103 }, 104 'remove_from_pinboard': { 105 'desc': _("Remove item from pinboard"), 106 'params': [('pinboard_ids',list,_('Pinboard identifiers'),True,)], 107 'call': self.remove_from_pinboard, 108 'private': True, 109 }, 110 'set_pinboard_items_done': { 111 'desc': _("Set pinboard items status (done/not done)"), 112 'params': [ 113 ('pinboard_ids',list,_('Pinboard identifiers'),True,), 114 ('done_status',bool,_('Done status'),True,), 115 ], 116 'call': self.set_pinboard_items_done, 117 'private': True, 118 }, 119 'write_to_running_command_pipe': { 120 'desc': _("Write to a remote running command stdin"), 121 'params': [ 122 ('queue_id',int,_('Queue Identifier'),True,), 123 ('write_to_stdout',bool,_('Write to stdout?'),True,), 124 ('txt',basestring,_('Text'),True,), 125 ], 126 'call': self.write_to_running_command_pipe, 127 'private': True, 128 }, 129 }
130
131 - def get_available_commands(self):
132 return self.Manager.do_cmd(False, "available_commands", [], {})
133
134 - def get_queue(self, extended = False):
135 return self.Manager.do_cmd(True, "get_queue", [extended], {})
136
137 - def get_queue_item_by_id(self, queue_id):
138 return self.Manager.do_cmd(True, "get_queue_item_by_id", [queue_id], {})
139
140 - def get_queue_id_stdout(self, queue_id, last_bytes = 0):
141 return self.Manager.do_cmd(True, "get_queue_id_stdout", [queue_id, last_bytes], {})
142
143 - def get_queue_id_result(self, queue_id):
144 return self.Manager.do_cmd(True, "get_queue_id_result", [queue_id], {})
145
146 - def remove_queue_ids(self, queue_ids):
147 return self.Manager.do_cmd(True, "remove_queue_ids", [queue_ids], {})
148
149 - def pause_queue(self, do_queue):
150 return self.Manager.do_cmd(True, "pause_queue", [do_queue], {})
151
152 - def kill_processing_queue_id(self, queue_id):
153 return self.Manager.do_cmd(True, "kill_processing_queue_id", [queue_id], {})
154
155 - def swap_items_in_queue(self, queue_id1, queue_id2):
156 return self.Manager.do_cmd(True, "swap_items_in_queue", [queue_id1,queue_id2], {})
157
158 - def get_pinboard_data(self):
159 return self.Manager.do_cmd(True, "get_pinboard_data", [], {})
160
161 - def add_to_pinboard(self, note, extended_text):
162 return self.Manager.do_cmd(True, "add_to_pinboard", [note,extended_text], {})
163
164 - def remove_from_pinboard(self, pinboard_ids):
165 return self.Manager.do_cmd(True, "remove_from_pinboard", [pinboard_ids], {})
166
167 - def set_pinboard_items_done(self, pinboard_ids, done_status):
168 return self.Manager.do_cmd(True, "set_pinboard_items_done", [pinboard_ids,done_status], {})
169
170 - def write_to_running_command_pipe(self, queue_id, write_to_stdout, txt):
171 return self.Manager.do_cmd(True, "write_to_running_command_pipe", [queue_id, write_to_stdout, txt], {})
172 173
174 -class Repository(BaseMixin):
175
176 - def __init__(self, *args, **kwargs):
177 BaseMixin.__init__(self, *args, **kwargs) 178 self.available_commands.update({ 179 'sync_spm': { 180 'desc': _("Update Spm Repository (emerge --sync)"), 181 'params': [], 182 'call': self.sync_spm, 183 'private': False, 184 }, 185 'compile_atoms': { 186 'desc': _("Compile specified atoms with specified parameters"), 187 'params': [ 188 ('atoms',list,_('Atoms'),True,), 189 ('pretend',bool,_('Pretend'),False,), 190 ('oneshot',bool,_('Oneshot'),False,), 191 ('verbose',bool,_('Verbose'),False,), 192 ('nocolor',bool,_('No color'),False,), 193 ('fetchonly',bool,_('Fetch only'),False,), 194 ('buildonly',bool,_('Build only'),False,), 195 ('nodeps',bool,_('No dependencies'),False,), 196 ('custom_use',basestring,_('Custom USE'),False,), 197 ('ldflags',basestring,_('Custom LDFLAGS'),False,), 198 ('cflags',basestring,_('Custom CFLAGS'),False,), 199 ], 200 'call': self.compile_atoms, 201 'private': False, 202 }, 203 'spm_remove_atoms': { 204 'desc': _("Remove specified atoms with specified parameters"), 205 'params': [ 206 ('atoms',list,_('Atoms'),True,), 207 ('pretend',bool,_('Pretend'),False,), 208 ('verbose',bool,_('Verbose'),False,), 209 ('nocolor',bool,_('No color'),False,), 210 ], 211 'call': self.spm_remove_atoms, 212 'private': False, 213 }, 214 'get_spm_categories_updates': { 215 'desc': _("Get SPM updates for the specified categories"), 216 'params': [('categories',list,_('Categories'),True,)], 217 'call': self.get_spm_categories_updates, 218 'private': False, 219 }, 220 'get_spm_categories_installed': { 221 'desc': _("Get SPM installed packages for the specified categories"), 222 'params': [('categories',list,_('Categories'),True,)], 223 'call': self.get_spm_categories_installed, 224 'private': False, 225 }, 226 'enable_uses_for_atoms': { 227 'desc': _("Enable USE flags for the specified atoms"), 228 'params': [ 229 ('atoms',list,_('Atoms'),True,), 230 ('useflags',list,_('USE flags'),True,) 231 ], 232 'call': self.enable_uses_for_atoms, 233 'private': False, 234 }, 235 'disable_uses_for_atoms': { 236 'desc': _("Disable USE flags for the specified atoms"), 237 'params': [ 238 ('atoms',list,_('Atoms'),True,), 239 ('useflags',list,_('USE flags'),True,) 240 ], 241 'call': self.disable_uses_for_atoms, 242 'private': False, 243 }, 244 'get_spm_atoms_info': { 245 'desc': _("Get info for the specified atoms"), 246 'params': [('atoms',list,_('Atoms'),True,)], 247 'call': self.get_spm_atoms_info, 248 'private': False, 249 }, 250 'run_spm_info': { 251 'desc': _("Run SPM info command"), 252 'params': [], 253 'call': self.run_spm_info, 254 'private': False, 255 }, 256 'run_custom_shell_command': { 257 'desc': _("Run custom shell command"), 258 'params': [ 259 ('command',basestring,_('Command'),True,) 260 ], 261 'call': self.run_custom_shell_command, 262 'private': False, 263 }, 264 'get_spm_glsa_data': { 265 'desc': _("Get Spm security updates information"), 266 'params': [ 267 ('list_type',basestring,_('List type (affected,new,all)'),True,) 268 ], 269 'call': self.get_spm_glsa_data, 270 'private': False, 271 }, 272 'get_available_repositories': { 273 'desc': _("Get information about available Entropy repositories"), 274 'params': [], 275 'call': self.get_available_repositories, 276 'private': False, 277 }, 278 'set_default_repository': { 279 'desc': _("Set default Entropy Server repository"), 280 'params': [ 281 ('repoid',basestring,_('Repository Identifier'),True,) 282 ], 283 'call': self.set_default_repository, 284 'private': False, 285 }, 286 'get_available_entropy_packages': { 287 'desc': _("Get available packages inside the specified repository"), 288 'params': [ 289 ('repoid',basestring,_('Repository Identifier'),True,) 290 ], 291 'call': self.get_available_entropy_packages, 292 'private': False, 293 }, 294 'get_entropy_idpackage_information': { 295 'desc': _("Get idpackage metadata using its idpackage in the specified repository"), 296 'params': [ 297 ('idpackage',int,_('Package Identifier'),True,), 298 ('repoid',basestring,_('Repository Identifier'),True,) 299 ], 300 'call': self.get_entropy_idpackage_information, 301 'private': False, 302 }, 303 'remove_entropy_packages': { 304 'desc': _("Remove the specified Entropy package matches (idpackage,repoid)"), 305 'params': [ 306 ('matched_atoms',list,_('Matched atoms'),True,) 307 ], 308 'call': self.remove_entropy_packages, 309 'private': False, 310 }, 311 'search_entropy_packages': { 312 'desc': _("Search Entropy packages using a defined set of search types in the specified repository"), 313 'params': [ 314 ('search_type',basestring,_('Search type'),True,), 315 ('search_string',basestring,_('Search string'),True,), 316 ('repoid',basestring,_('Repository Identifier'),True,) 317 ], 318 'call': self.search_entropy_packages, 319 'private': False, 320 }, 321 'move_entropy_packages_to_repository': { 322 'desc': _("Move or copy a package from a repository to another"), 323 'params': [ 324 ('idpackages',list,_('Package identifiers'),True,), 325 ('from_repo',basestring,_('From repository'),True,), 326 ('to_repo',basestring,_('To repository'),True,), 327 ('do_copy',bool,_('Copy instead of move?'),False,) 328 ], 329 'call': self.search_entropy_packages, 330 'private': False, 331 }, 332 'scan_entropy_packages_database_changes': { 333 'desc': _("Scan Spm package changes and retrieve a list of action that should be run on the repositories"), 334 'params': [], 335 'call': self.scan_entropy_packages_database_changes, 336 'private': False, 337 }, 338 'run_entropy_database_updates': { 339 'desc': _("Run Entropy database updates"), 340 'params': [ 341 ('to_add',list,_('Matches to add from Spm'),True,), 342 ('to_remove',list,_('Matches to remove from repository database'),True,), 343 ('to_inject',list,_('Matches to inject on repository database'),True,), 344 ], 345 'call': self.run_entropy_database_updates, 346 'private': False, 347 }, 348 'run_entropy_dependency_test': { 349 'desc': _("Run Entropy dependency test"), 350 'params': [], 351 'call': self.run_entropy_dependency_test, 352 'private': False, 353 }, 354 'run_entropy_library_test': { 355 'desc': _("Run Entropy library test"), 356 'params': [], 357 'call': self.run_entropy_library_test, 358 'private': False, 359 }, 360 'run_entropy_treeupdates': { 361 'desc': _("Run Entropy tree updates"), 362 'params': [ 363 ('repoid',basestring,_('Repository Identifier'),True,), 364 ], 365 'call': self.run_entropy_treeupdates, 366 'private': False, 367 }, 368 'scan_entropy_mirror_updates': { 369 'desc': _("Scan for Mirror updates and retrieve a list of action that should be run"), 370 'params': [ 371 ('repositories',list,_('list of repository identifiers'),True,), 372 ], 373 'call': self.scan_entropy_mirror_updates, 374 'private': False, 375 }, 376 'run_entropy_mirror_updates': { 377 'desc': _("Run Mirror updates for the provided repositories and its data"), 378 'params': [ 379 ('repository_data',dict,_('composed repository data'),True,), 380 ], 381 'call': self.run_entropy_mirror_updates, 382 'private': False, 383 }, 384 'run_entropy_checksum_test': { 385 'desc': _("Run Entropy packages digest verification test"), 386 'params': [ 387 ('repoid',basestring,_('Repository Identifier'),True,), 388 ('mode',basestring,_('Check mode'),False,), 389 ], 390 'call': self.run_entropy_mirror_updates, 391 'private': False, 392 }, 393 'get_notice_board': { 394 'desc': _("Get repository notice board"), 395 'params': [('repoid',basestring,_('Repository Identifier'),True,),], 396 'call': self.get_notice_board, 397 'private': False, 398 }, 399 'remove_notice_board_entries': { 400 'desc': _("Remove notice board entry"), 401 'params': [ 402 ('repoid',basestring,_('Repository Identifier'),True,), 403 ('entry_ids',list,_('Entry Identifiers'),True,), 404 ], 405 'call': self.remove_notice_board_entries, 406 'private': False, 407 }, 408 'add_notice_board_entry': { 409 'desc': _("Add notice board entry"), 410 'params': [ 411 ('repoid',basestring,_('Repository Identifier'),True,), 412 ('title',basestring,_('Title'),True,), 413 ('notice_text',basestring,_('Text'),True,), 414 ('link',basestring,_('Notice link'),True,), 415 ], 416 'call': self.add_notice_board_entry, 417 'private': False, 418 }, 419 })
420
421 - def sync_spm(self):
422 return self.Manager.do_cmd(True, "sync_spm", [], {})
423
424 - def compile_atoms(self, atoms, pretend = False, oneshot = False, verbose = True, nocolor = True, fetchonly = False, buildonly = False, nodeps = False, custom_use = '', ldflags = '', cflags = ''):
425 return self.Manager.do_cmd( 426 True, 427 "compile_atoms", 428 [atoms], 429 { 430 'pretend': pretend, 431 'oneshot': oneshot, 432 'verbose': verbose, 433 'nocolor': nocolor, 434 'fetchonly': fetchonly, 435 'buildonly': buildonly, 436 'nodeps': nodeps, 437 'custom_use': custom_use, 438 'ldflags': ldflags, 439 'cflags': cflags, 440 } 441 )
442
443 - def spm_remove_atoms(self, atoms, pretend = True, verbose = True, nocolor = True):
444 return self.Manager.do_cmd( 445 True, 446 "spm_remove_atoms", 447 [atoms], 448 { 449 'pretend': pretend, 450 'verbose': verbose, 451 'nocolor': nocolor, 452 } 453 )
454
455 - def get_spm_categories_updates(self, categories):
456 return self.Manager.do_cmd(True, "get_spm_categories_updates", [categories], {})
457
458 - def get_spm_categories_installed(self, categories):
459 return self.Manager.do_cmd(True, "get_spm_categories_installed", [categories], {})
460
461 - def enable_uses_for_atoms(self, atoms, useflags):
462 return self.Manager.do_cmd(True, "enable_uses_for_atoms", [atoms,useflags], {})
463
464 - def disable_uses_for_atoms(self, atoms, useflags):
465 return self.Manager.do_cmd(True, "disable_uses_for_atoms", [atoms,useflags], {})
466
467 - def get_spm_atoms_info(self, atoms):
468 return self.Manager.do_cmd(True, "get_spm_atoms_info", [atoms], {})
469
470 - def run_spm_info(self):
471 return self.Manager.do_cmd(True, "run_spm_info", [], {})
472
473 - def run_custom_shell_command(self, command):
474 return self.Manager.do_cmd(True, "run_custom_shell_command", [command], {})
475
476 - def get_spm_glsa_data(self, list_type = "affected"):
477 return self.Manager.do_cmd(True, "get_spm_glsa_data", [list_type], {})
478
480 return self.Manager.do_cmd(True, "get_available_repositories", [], {})
481
482 - def set_default_repository(self, repoid):
483 return self.Manager.do_cmd(True, "set_default_repository", [repoid], {})
484
485 - def get_available_entropy_packages(self, repoid):
486 return self.Manager.do_cmd(True, "get_available_entropy_packages", [repoid], {})
487
488 - def get_entropy_idpackage_information(self, idpackage, repoid):
489 return self.Manager.do_cmd(True, "get_entropy_idpackage_information", [idpackage,repoid], {})
490
491 - def remove_entropy_packages(self, matched_atoms):
492 return self.Manager.do_cmd(True, "remove_entropy_packages", [matched_atoms], {})
493
494 - def search_entropy_packages(self, search_type, search_string, repoid):
495 return self.Manager.do_cmd(True, "search_entropy_packages", [search_type,search_string,repoid], {})
496
497 - def move_entropy_packages_to_repository(self, idpackages, from_repo, to_repo, do_copy = False):
498 return self.Manager.do_cmd(True, "move_entropy_packages_to_repository", [idpackages,from_repo,to_repo, do_copy], {})
499
501 return self.Manager.do_cmd(True, "scan_entropy_packages_database_changes", [], {})
502
503 - def run_entropy_database_updates(self, to_add, to_remove, to_inject):
504 return self.Manager.do_cmd(True, "run_entropy_database_updates", [to_add,to_remove,to_inject], {})
505
507 return self.Manager.do_cmd(True, "run_entropy_dependency_test", [], {})
508
509 - def run_entropy_library_test(self):
510 return self.Manager.do_cmd(True, "run_entropy_library_test", [], {})
511
512 - def run_entropy_treeupdates(self, repoid):
513 return self.Manager.do_cmd(True, "run_entropy_treeupdates", [repoid], {})
514
515 - def scan_entropy_mirror_updates(self, repositories):
516 return self.Manager.do_cmd(True, "scan_entropy_mirror_updates", [repositories], {})
517
518 - def run_entropy_mirror_updates(self, repository_data):
519 return self.Manager.do_cmd(True, "run_entropy_mirror_updates", [repository_data], {})
520
521 - def run_entropy_checksum_test(self, repoid, mode = "local"):
522 return self.Manager.do_cmd(True, "run_entropy_checksum_test", [repoid, mode], {})
523
524 - def get_notice_board(self, repoid):
525 return self.Manager.do_cmd(True, "get_notice_board", [repoid], {})
526
527 - def remove_notice_board_entries(self, repoid, entry_ids):
528 return self.Manager.do_cmd(True, "remove_notice_board_entries", [repoid,entry_ids], {})
529
530 - def add_notice_board_entry(self, repoid, title, notice_text, link):
531 return self.Manager.do_cmd(True, "add_notice_board_entry", [repoid,title,notice_text,link], {})
532