Under Construction
Operation "change": Hinzufügen und Wegnehmen von Mitgliedern einer res_group
Wir starten mit der Ressource-Gruppe aix730300_res_grp, welche aktuell die folgenden Mitglieder hat:
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = aix730300lpp
member2 = aix730300spot
member3 = std_bosinst_data
member4 = std_image_data
member5 = script1
member6 = bundle1_bnd
aixnim #
Eine Ressource kann hinzugefügt werden, indem als Attribut der Typ der Ressource angegeben wird und als Wert der NIM-Name der Ressource. Gibt es schon ein Mitglied des angegebenen Typs, wird je nach Ressource-Typ unterschiedlich verfahren:
- installp_bundle und script Ressourcen: die angegebene neue Ressource wird hinzugefügt, Ressourcen des gleichen Typs bleiben als Mitglieder erhalten.
- Alle anderen Ressource-Typen: die schon vorhandene Ressource des gleichen Typs wird überschrieben.
Das Mitglied script1 (member5) ist eine script Ressource. Da mehrere script Ressourcen in einer Ressource-Gruppe erlaubt sind, wird eine weitere script Ressource hinzugefügt:
aixnim # nim -o change -a script=script2 aix730300_res_grp
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = aix730300lpp
member2 = aix730300spot
member3 = std_bosinst_data
member4 = std_image_data
member5 = script1
member6 = bundle1_bnd
member7 = script2
aixnim #
Es gibt nun zwei Ressourcen vom Typ script: script1 (member5) und script2 (member7).
Gibt man allerdings eine lpp_source Ressource an, dann wird die schon vorhandene lpp_source Ressource aix730300lpp durch die neue lpp_source Ressource ersetzt, da nur eine lpp_source Ressource in einer Ressource-Gruppe (res_group) erlaubt ist:
aixnim # nim -o change -a lpp_source=aix730202lpp aix730300_res_grp
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = aix730202lpp
member2 = aix730300spot
member3 = std_bosinst_data
member4 = std_image_data
member5 = script1
member6 = bundle1_bnd
member7 = script2
aixnim #
Die lpp_source (member1) wurde durch die angegebene lpp_source aix730202lpp ersetzt. Die ursprüngliche lpp_source aix730300lpp ist nicht mehr Mitglied der Gruppe.
Anstelle den Ressource-Typ als Attribut-Namen zu verwenden, kann auch gezielt das Attribut member mit einer Folgenummer verwendet werden. Damit kann gezielt ein bestimmtes Mitglied ersetzt werden, oder falls es die Folgenummer noch nicht gibt, auch neu hinzugefügt werden. Der Ressource-Typ des neuen Mitglieds kann sich dabei durchaus vom zu ersetzenden Mitglied unterscheiden!
Wir ersetzen das Mitglied member1, aktuell die lpp_source aix730202lpp, durch die script Ressource script3:
aixnim # nim -o change -a member1=script3 aix730300_res_grp
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = script3
member2 = aix730300spot
member3 = std_bosinst_data
member4 = std_image_data
member5 = script1
member6 = bundle1_bnd
member7 = script2
aixnim #
Der Typ von member1 hat sich geändert, es gibt jetzt keine lpp_source Ressource mehr in der Ressource-Gruppe!
Wir ersetzen das Mitglied member1 erneut, dieses Mal durch den SPOT aix730201spot:
aixnim # nim -o change -a member1=aix730201spot aix730300_res_grp
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = aix730201spot
member2 = aix730300spot
member3 = std_bosinst_data
member4 = std_image_data
member5 = script1
member6 = bundle1_bnd
member7 = script2
aixnim #
Unglücklicherweise wird das Mitglied ersetzt und es gibt nun zwei SPOTs in der Ressource-Gruppe. (Ein Case dazu ist offen.)
Gibt man eine Folgenummer an, die es noch nicht in der Ressource-Gruppe gibt, dann wird immer hinzugefügt.
Gezieltes angegeben von Mitgliedern über die Folgenummer sollte nur verwendet werden, wenn ein bestimmtes Mitglied ersetzt werden soll. Ansonsten sollte besser das Attribut „add_member“ verwendet werden. Hier findet dann auch immer eine Überprüfung statt, ob es einen Ressource-Typen eventuell schon in der Ressource-Gruppe gibt. Wir fügen noch einen SPOT (aix730202spot) hinzu, aber dieses Mal mit dem Attribut „add_member“:
aixnim # nim -o change -a add_member=aix730202spot aix730300_res_grp
0042-001 nim: processing error encountered on "master":
0042-220 m_chgroup: You cannot have more than one resource of type
spot in a resource group.
aixnim #
Dieses Mal gibt es eine eindeutige Fehlermeldung, die darauf hinweist das nur maximal ein SPOT in einer Ressource-Gruppe erlaubt ist.
Eine weitere installp_bundle Ressource lässt sich hingegen ohne weiteres hinzufügen, da mehrere installp_bundle Ressourcen erlaubt sind:
aixnim # nim -o change -a add_member=bundle2_bnd aix730300_res_grp
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = aix730201spot
member2 = aix730300spot
member3 = std_bosinst_data
member4 = std_image_data
member5 = script1
member6 = bundle1_bnd
member7 = script2
member8 = bundle2_bnd
aixnim #
Auch beim Wegnehmen von Ressourcen gibt es verschiedene Möglichkeiten.
Alle Ressource-Typen können durch Angabe des Ressource-Typs mit leerem Wert entfernt werden. Z.B. lässt sich die image_data Ressource std_image_data ganz einfach so entfernen:
aixnim # nim -o change -a image_data= aix730300_res_grp
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = aix730201spot
member2 = aix730300spot
member3 = std_bosinst_data
member5 = script1
member6 = bundle1_bnd
member7 = script2
member8 = bundle2_bnd
aixnim #
Bei den Ressource-Typen installp_bundle und script wird dann die erste gefundene Ressource dieses Typs entfernt. Als Beispiel entfernen wir die erste der beiden installp_bundle Ressourcen:
aixnim # nim -o change -a installp_bundle= aix730300_res_grp
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = aix730201spot
member2 = aix730300spot
member3 = std_bosinst_data
member5 = script1
member7 = script2
member8 = bundle2_bnd
aixnim #
Die zweite Möglichkeit ist die Verwendung von member mit einer Folgenummer. Auch hier wird wieder ein leerer Wert (Zeichenkette) angegeben. Wir entfernen als Beispiel das Mitglied aix730300spot (member2):
aixnim # nim -o change -a member2= aix730300_res_grp
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = aix730201spot
member3 = std_bosinst_data
member5 = script1
member7 = script2
member8 = bundle2_bnd
aixnim #
Die dritte Möglichkeit besteht in der Verwendung des Attributs „rm_member“, wobei als Wert der NIM-Name der zu entfernenden Ressource angegeben wird. Als Beispiel entfernen wir die script Ressource script2 (member7):
aixnim # lsnim -l aix730300_res_grp
aix730300_res_grp:
class = groups
type = res_group
member1 = aix730201spot
member3 = std_bosinst_data
member5 = script1
member8 = bundle2_bnd
aixnim #