ich beschäftige mich neu mit der OOP in Python und komme irgendwie nicht weiter. Ich rufe eine Klasse auf und möchte, dass im Fehlerfall der Aufruf aussteigt, allerdings alle weiteren Aufrufe ausgeführt werden:
Code: Alles auswählen
print Parameter("hoost","servera.example.com").get("systemowner")
print Parameter("host","serverb.example.com").get("systemowner")
Code: Alles auswählen
42 class Parameter(Sat):
43
44 def __init__(self, form, form_name = None):
45 # form: hostgroup, global, subnet, etc.
46
47 Sat.__init__(self)
48 self.form_name = form_name
49
50 # declare input form and
51 # repair form
52 if form in [ "host" ]:
53 self.form = "hosts"
54 elif form in [ "hg" , "hostgroup" ]:
55 self.form = "hostgroups"
56 elif form in [ "common", "global", "gl", "gl_" ]:
57 self.form = "common"
58 else:
59 self.form = form
60
61 # check valid form
62 valid_forms = [ "hosts", "hostgroups", "common" ]
63 if not self.form in valid_forms:
64 print "Error: " + form + " is not a valid type. Please use a valid form like " + str(valid_forms)
65 sys.exit(1)
66
67 if not self.form == "common":
68 if not self.form_name:
69 print "Error: For the form " + self.form + " you have to input a searching name"
70 sys.exit(1)
71
72
73 def get_form_id(self):
74 if self.form == "hosts":
75 post_url = "/api/" + self.form + "/" + self.form_name
76 result = Sat.get_results(self, post_url)
77 if result:
78 return result.get('id')
79 else:
80 post_url = "/api/" + self.form + "?search=" + self.form_name
81 result = Sat.get_results(self, post_url)
82 if result:
83 if not len(result) == 1:
84 print "Error: Too many results for " + self.form_name + " . Please use the exact name!"
85 else:
86 return result[0].get('id')
87 else:
88 print "Error: Nothing found for " + self.form_name
89
90
91 def get(self, parameter):
92 if self.form == "common":
93 self.post_url = "/api/common_parameters/" + parameter
94 else:
95 form_id = Parameter.get_form_id(self)
96 self.post_url = "/api/" + self.form + "/" + str(form_id) + "/parameters/" + parameter
97 return Sat.get_results(self, self.post_url)
1. Gibt es eine Lösung wie ich anstatt mit sys.exit(1) aussteige, damit der zweite Aufruf ausgeführt wird
2. Ist es ratsam sowas in __init__ zu machen?
3. Gerne weitere Anmerkungen.
[
Danke
Viele Grüße
lnix