Add 'list disks'

Enables consuming /client/setup API from ogServer in order to fetch
partition and disk setup information from a given client.

Example, if pc11 is a client with 1 disk, 4 part (1:linux,2-3:empty,4:cache):

ogcli list disk --client-ip 192.168.56.11

{
  "partitions": [
    {
      "disk": 1,
      "partition": 0,
      "code": 1,
      "size": 52428800,
      "used_size": 0,
      "filesystem": 0,
      "os": 0,
      "image": 0,
      "software": 0
    },
    {
      "disk": 1,
      "partition": 1,
      "code": 131,
      "size": 40000000,
      "used_size": 4,
      "filesystem": 6,
      "os": 8,
      "image": 0,
      "software": 0
    },
    {
      "disk": 1,
      "partition": 2,
      "code": 0,
      "size": 0,
      "used_size": 0,
      "filesystem": 1,
      "os": 0,
      "image": 0,
      "software": 0
    },
    {
      "disk": 1,
      "partition": 3,
      "code": 0,
      "size": 0,
      "used_size": 0,
      "filesystem": 1,
      "os": 0,
      "image": 0,
      "software": 0
    },
    {
      "disk": 1,
      "partition": 4,
      "code": 202,
      "size": 10000000,
      "used_size": 1,
      "filesystem": 2,
      "os": 0,
      "image": 0,
      "software": 0
    }
  ]
}
master
Jose M. Guisado 2021-04-06 11:17:51 +02:00 committed by OpenGnSys Support Team
parent c417964179
commit 4dfb90cf56
2 changed files with 28 additions and 1 deletions

View File

@ -11,6 +11,7 @@ from cli.objects.scopes import OgScope
from cli.objects.modes import OgModes
from cli.objects.wol import OgWol
from cli.objects.images import OgImage
from cli.objects.disks import OgDisk
import argparse
import requests
import sys
@ -51,7 +52,7 @@ class OgCLI():
def list(self, args):
choices = ['clients', 'scopes', 'modes', 'hardware',
'client', 'images']
'client', 'images', 'disks']
parser = argparse.ArgumentParser(prog='ogcli list')
parser.add_argument('item', choices=choices)
parsed_args = parser.parse_args([args[0]])
@ -68,6 +69,8 @@ class OgCLI():
OgScope.list_scopes(self.rest)
elif parsed_args.item == 'images':
OgImage.list_images(self.rest)
elif parsed_args.item == 'disks':
OgDisk.list_disks(self.rest, args[1:])
def set(self, args):
choices = ['modes']

View File

@ -0,0 +1,24 @@
#
# Copyright (C) 2021 Soleta Networks <info@soleta.eu>
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the
# Free Software Foundation, version 3.
#
import argparse
class OgDisk():
@staticmethod
def list_disks(rest, args):
parser = argparse.ArgumentParser()
parser.add_argument('--client-ip',
nargs='?',
required=True,
help='Client IP to query')
parsed_args = parser.parse_args(args)
payload = {'client': [parsed_args.client_ip]}
r = rest.get('/client/setup', payload=payload)
print(r.text)