ssh subcommand added for vm command + config file added
This commit is contained in:
parent
89b48c5f06
commit
267828e85a
5 changed files with 34 additions and 3 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -3,3 +3,6 @@
|
||||||
|
|
||||||
__pycache__
|
__pycache__
|
||||||
ucloud_cli.egg-info
|
ucloud_cli.egg-info
|
||||||
|
|
||||||
|
build/
|
||||||
|
dist/
|
4
conf/ucloud-cli.conf
Normal file
4
conf/ucloud-cli.conf
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
OTP_NAME=replace_me
|
||||||
|
OTP_REALM=replace_me
|
||||||
|
OTP_SEED=replace_me
|
||||||
|
UCLOUD_API_SERVER=http://[::]:5000
|
3
setup.py
3
setup.py
|
@ -1,3 +1,5 @@
|
||||||
|
import os
|
||||||
|
|
||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
with open("README.md", "r") as fh:
|
with open("README.md", "r") as fh:
|
||||||
|
@ -25,4 +27,5 @@ setup(name='ucloud_cli',
|
||||||
'click'
|
'click'
|
||||||
],
|
],
|
||||||
scripts=['bin/ucloud-cli'],
|
scripts=['bin/ucloud-cli'],
|
||||||
|
data_files=[(os.path.expanduser('~/ucloud/'), ['conf/ucloud-cli.conf'])],
|
||||||
zip_safe=False)
|
zip_safe=False)
|
|
@ -1,5 +1,7 @@
|
||||||
import click
|
import click
|
||||||
|
import json
|
||||||
import requests
|
import requests
|
||||||
|
import subprocess as sp
|
||||||
|
|
||||||
from ucloud_cli.commands.helper import OTPCredentials, load_dump_pretty
|
from ucloud_cli.commands.helper import OTPCredentials, load_dump_pretty
|
||||||
from ucloud_cli.config import env_vars
|
from ucloud_cli.config import env_vars
|
||||||
|
@ -118,3 +120,22 @@ def vm_migration(name, realm, seed, vm_name, destination, in_support_of):
|
||||||
join_path(env_vars.get("UCLOUD_API_SERVER"), "vm", "migrate"), json=data
|
join_path(env_vars.get("UCLOUD_API_SERVER"), "vm", "migrate"), json=data
|
||||||
)
|
)
|
||||||
print(load_dump_pretty(r.content))
|
print(load_dump_pretty(r.content))
|
||||||
|
|
||||||
|
|
||||||
|
@vm.command("ssh")
|
||||||
|
@click.option("--name", required=True, default=env_vars.get("OTP_NAME"))
|
||||||
|
@click.option("--realm", required=True, default=env_vars.get("OTP_REALM"))
|
||||||
|
@click.option("--seed", required=True, default=env_vars.get("OTP_SEED"))
|
||||||
|
@click.option("--vm-name", required=True)
|
||||||
|
@click.option("--in_support_of")
|
||||||
|
def ssh(name, realm, seed, vm_name, in_support_of):
|
||||||
|
otp = OTPCredentials(name, realm, seed)
|
||||||
|
data = {**otp.get_json(), "vm_name": vm_name, "in_support_of": in_support_of}
|
||||||
|
r = requests.get(join_path(env_vars.get("UCLOUD_API_SERVER"), "vm", "status"), json=data)
|
||||||
|
try:
|
||||||
|
_json = json.loads(r.content)
|
||||||
|
sp.run(['ssh', '-o', 'ConnectTimeout=10',
|
||||||
|
'root@{}'.format(_json['ip'][0])])
|
||||||
|
except Exception as err:
|
||||||
|
print("Some error occurred while accessing VM."
|
||||||
|
"Make sure VM is running", err)
|
||||||
|
|
|
@ -3,7 +3,7 @@ from os.path import expanduser
|
||||||
from decouple import Config, RepositoryEnv
|
from decouple import Config, RepositoryEnv
|
||||||
|
|
||||||
try:
|
try:
|
||||||
env_vars = Config(RepositoryEnv(expanduser("~/.ucloud.conf")))
|
env_vars = Config(RepositoryEnv(expanduser("~/ucloud/ucloud-cli.conf")))
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
print(err)
|
print(err)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
Loading…
Reference in a new issue