root/autopilot/trunk/autopilot/delete_task.py

Revision 72 (checked in by cbc, 12 years ago)

Create add-option command.

Line 
1 """
2 Delete task from glider configuration.
3
4     Usage:
5
6         delete-task glider task
7
8     or
9
10         python delete_task.py path/to/config/file glider task
11 """
12
13 import sys
14 import errno
15 import lockfile as lf
16 import ConfigParser as cp
17
18 if __name__ == "__main__":
19     num_args = len(sys.argv) - 1
20     if num_args != 3:
21         print __doc__
22     else:
23         cfg_path = sys.argv[1]
24         glider = sys.argv[2].lower()
25         task = sys.argv[3].lower()
26         report = {"glider": glider,
27                   "path": cfg_path,
28                   "task": task,
29                      }
30         try:
31             lock = lf.FileLock(cfg_path)
32             lock.acquire(5)
33         except lf.LockTimeout:
34             lock.break_lock()
35             lock.acquire(0)
36         config = cp.SafeConfigParser()
37         try:
38             with open(cfg_path) as handle:
39                 config.readfp(handle)
40         except IOError as e:
41             if e.errno == errno.ENOENT:
42                 print "Glider {glider} does not exist in {path}.". \
43                       format(**report)
44             else:
45                 raise
46         else:
47             try:
48                 tasks = config.get(glider, "tasks").split()
49             except cp.NoOptionError:
50                 print "The {task} task for glider {glider} " \
51                       "does not exist in {path}.". \
52                       format(**report)
53             except cp.NoSectionError:
54                 print "Glider {glider} does not exist in {path}.". \
55                       format(**report)
56             else:
57                 if task not in tasks:
58                     print "The {task} task for glider {glider} " \
59                           "does not exist in {path}.". \
60                           format(**report)
61                 else:
62                     tasks.remove(task)
63                     config.set(glider, "tasks", " ".join(tasks))
64                     with open(cfg_path, "w") as handle:
65                         config.write(handle)
66                     print "The {task} task for glider {glider} " \
67                           "deleted from {path}.". \
68                           format(**report)
69         finally:
70             lock.release()
Note: See TracBrowser for help on using the browser.