65 lines
2.5 KiB
Python
65 lines
2.5 KiB
Python
import argparse
|
|
import sys
|
|
import os
|
|
|
|
from ucloud.settings import settings
|
|
from ucloud.shared import shared
|
|
|
|
|
|
def update_config(section, kwargs):
|
|
uncloud_config = shared.etcd_client.get(settings.config_key, value_in_json=True)
|
|
if not uncloud_config:
|
|
uncloud_config = {}
|
|
else:
|
|
uncloud_config = uncloud_config.value
|
|
|
|
uncloud_config[section] = kwargs
|
|
shared.etcd_client.put(settings.config_key, uncloud_config, value_in_json=True)
|
|
|
|
|
|
def configure_parser(parser):
|
|
configure_subparsers = parser.add_subparsers(dest="subcommand")
|
|
|
|
otp_parser = configure_subparsers.add_parser("otp")
|
|
otp_parser.add_argument("--verification-controller-url",
|
|
required=True, metavar="URL")
|
|
otp_parser.add_argument("--auth-name", required=True,
|
|
metavar="OTP-NAME")
|
|
otp_parser.add_argument("--auth-realm", required=True,
|
|
metavar="OTP-REALM")
|
|
otp_parser.add_argument("--auth-seed", required=True,
|
|
metavar="OTP-SEED")
|
|
|
|
network_parser = configure_subparsers.add_parser("network")
|
|
network_parser.add_argument("--prefix-length", required=True, type=int)
|
|
network_parser.add_argument("--prefix", required=True)
|
|
network_parser.add_argument("--vxlan-phy-dev", required=True)
|
|
|
|
netbox_parser = configure_subparsers.add_parser("netbox")
|
|
netbox_parser.add_argument("--url", required=True)
|
|
netbox_parser.add_argument("--token", required=True)
|
|
|
|
ssh_parser = configure_subparsers.add_parser("ssh")
|
|
ssh_parser.add_argument('--username', default="root")
|
|
ssh_parser.add_argument('--private-key-path',
|
|
default=os.path.expanduser("~/.ssh/id_rsa"))
|
|
|
|
storage_parser = configure_subparsers.add_parser("storage")
|
|
storage_parser.add_argument('--file-dir', required=True)
|
|
storage_parser_subparsers = storage_parser.add_subparsers(dest="storage_backend")
|
|
|
|
filesystem_storage_parser = storage_parser_subparsers.add_parser("filesystem")
|
|
filesystem_storage_parser.add_argument('--vm-dir', required=True)
|
|
filesystem_storage_parser.add_argument('--image-dir', required=True)
|
|
|
|
ceph_storage_parser = storage_parser_subparsers.add_parser("ceph")
|
|
ceph_storage_parser.add_argument('--ceph-vm-pool', required=True)
|
|
ceph_storage_parser.add_argument('--ceph-image-pool', required=True)
|
|
|
|
|
|
def main(**kwargs):
|
|
subcommand = kwargs.pop('subcommand')
|
|
if not subcommand:
|
|
pass
|
|
else:
|
|
update_config(subcommand, kwargs)
|