Python Client
Sie können auf die Longhorn-API mit Python-Binding zugreifen.
-
Longhorn-Endpunkt abrufen
Eine Möglichkeit, mit Longhorn zu kommunizieren, ist über den
longhorn-frontendDienst.Wenn Sie Ihr Automatisierungs-/Skript-Tool im selben Cluster ausführen, in dem Longhorn installiert ist, verbinden Sie sich mit dem Endpunkt
http://longhorn-frontend.longhorn-system/v1Wenn Sie Ihr Automatisierungs-/Skript-Tool auf Ihrem lokalen Rechner ausführen, verwenden Sie
kubectl port-forward, um denlonghorn-frontendDienst an localhost weiterzuleiten:kubectl port-forward services/longhorn-frontend 8080:http -n longhorn-system
und verbinden Sie sich mit dem Endpunkt
http://localhost:8080/v1 -
Verwendung des Python-Clients
Importieren Sie die Datei longhorn.py, die den Python-Client enthält, in Ihr Python-Skript und erstellen Sie einen Client vom Endpunkt:
import longhorn # If automation/scripting tool is inside the same cluster in which Longhorn is installed longhorn_url = 'http://longhorn-frontend.longhorn-system/v1' # If forwarding `longhorn-frontend` service to localhost longhorn_url = 'http://localhost:8080/v1' client = longhorn.Client(url=longhorn_url) # Volume operations # List all volumes volumes = client.list_volume() # Get volume by NAME/ID testvol1 = client.by_id_volume(id="testvol1") # Attach TESTVOL1 testvol1 = testvol1.attach(hostId="worker-1") # Detach TESTVOL1 testvol1.detach() # Create a snapshot of TESTVOL1 with NAME snapshot1 = testvol1.snapshotCreate(name="snapshot1") # Create a backup from a snapshot NAME testvol1.snapshotBackup(name=snapshot1.name) # Update the number of replicas of TESTVOL1 testvol1.updateReplicaCount(replicaCount=2) # Find more examples in Longhorn integration tests https://github.com/longhorn/longhorn-tests/tree/master/manager/integration/tests # Node operations # List all nodes nodes = client.list_node() # Get node by NAME/ID node1 = client.by_id_node(id="worker-1") # Disable scheduling for NODE1 client.update(node1, allowScheduling=False) # Enable scheduling for NODE1 client.update(node1, allowScheduling=True) # Find more examples in Longhorn integration tests https://github.com/longhorn/longhorn-tests/tree/master/manager/integration/tests # Setting operations # List all settings settings = client.list_setting() # Get setting by NAME/ID backupTargetsetting = client.by_id_setting(id="backup-target") # Update a setting backupTargetsetting = client.update(backupTargetsetting, value="s3://backupbucket@us-east-1/") # Find more examples in Longhorn integration tests https://github.com/longhorn/longhorn-tests/tree/master/manager/integration/tests