Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thomas Leymonerie
slapos.core
Commits
77035bfa
Commit
77035bfa
authored
Apr 23, 2013
by
Marco Mariani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cli refactoring: console
parent
b41b981f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
77 additions
and
30 deletions
+77
-30
setup.py
setup.py
+1
-0
slapos/cli/config.py
slapos/cli/config.py
+9
-0
slapos/cli/console.py
slapos/cli/console.py
+31
-0
slapos/client.py
slapos/client.py
+36
-30
No files found.
setup.py
View file @
77035bfa
...
...
@@ -77,6 +77,7 @@ setup(name=name,
'node bang = slapos.cli.bang:BangCommand'
,
'node format = slapos.cli.format:FormatCommand'
,
'node register = slapos.cli.register:RegisterCommand'
,
'console = slapos.cli.console:ConsoleCommand'
,
]
},
test_suite
=
"slapos.tests"
,
...
...
slapos/cli/config.py
View file @
77035bfa
...
...
@@ -10,6 +10,8 @@ class ConfigError(Exception):
pass
class
ConfigCommand
(
Command
):
"Base class for commands that require a configuration file"
...
...
@@ -61,3 +63,10 @@ class ConfigCommand(Command):
self
.
log
.
debug
(
'Loading config: %s'
%
cfg_path
)
return
self
.
_get_config
(
cfg_path
,
required
=
True
)
class
ClientConfigCommand
(
ConfigCommand
):
# XXX does not fallback to SLAPOS_CONFIGURATION
default_config_var
=
'SLAPOS_CLIENT_CONFIGURATION'
default_config_path
=
'~/.slapos/slapos.cfg'
slapos/cli/console.py
0 → 100644
View file @
77035bfa
# -*- coding: utf-8 -*-
import
logging
from
slapos.cli.config
import
ClientConfigCommand
from
slapos.client
import
init
,
do_console
,
ClientConfig
class
ConsoleCommand
(
ClientConfigCommand
):
"""
slapconsole allows you interact with slap API. You can play with the global
"slap" object and with the global "request" method.
examples :
>>> # Request instance
>>> request(kvm, "myuniquekvm")
>>> # Request software installation on owned computer
>>> supply(kvm, "mycomputer")
>>> # Fetch instance informations on already launched instance
>>> request(kvm, "myuniquekvm").getConnectionParameter("url")
"""
# XXX TODO: docstring is printed without newlines
log
=
logging
.
getLogger
(
__name__
)
def
take_action
(
self
,
args
):
configuration_parser
=
self
.
fetch_config
(
args
)
config
=
ClientConfig
(
args
,
configuration_parser
)
local
=
init
(
config
)
do_console
(
local
)
slapos/client.py
View file @
77035bfa
...
...
@@ -115,8 +115,18 @@ def check_request_args():
return
args
class
Config
:
def
__init__
(
self
,
option_dict
,
configuration_file_path
=
None
):
def
get_config_parser
(
path
):
configuration_parser
=
ConfigParser
.
SafeConfigParser
()
path
=
os
.
path
.
expanduser
(
path
)
if
not
os
.
path
.
isfile
(
path
):
raise
OSError
(
'Specified configuration file %s does not exist. Exiting.'
%
path
)
configuration_parser
.
read
(
path
)
return
configuration_parser
class
ClientConfig
(
object
):
def
__init__
(
self
,
option_dict
,
configuration_parser
=
None
):
"""
Set options given by parameters.
"""
...
...
@@ -124,14 +134,6 @@ class Config:
for
option
,
value
in
option_dict
.
__dict__
.
items
():
setattr
(
self
,
option
,
value
)
# Load configuration file
configuration_parser
=
ConfigParser
.
SafeConfigParser
()
if
configuration_file_path
:
configuration_file_path
=
os
.
path
.
expanduser
(
configuration_file_path
)
if
not
os
.
path
.
isfile
(
configuration_file_path
):
raise
OSError
(
'Specified configuration file %s does not exist.'
' Exiting.'
%
configuration_file_path
)
configuration_parser
.
read
(
configuration_file_path
)
# Merges the arguments and configuration
try
:
configuration_dict
=
dict
(
configuration_parser
.
items
(
'slapconsole'
))
...
...
@@ -194,7 +196,7 @@ def request():
# Parse arguments and inititate needed parameters
# XXX-Cedric: move argument parsing to main entry point
options
=
check_request_args
()
config
=
C
onfig
(
options
,
options
.
configuration_file
)
config
=
C
lientConfig
(
options
,
get_config_parser
(
options
.
configuration_file
)
)
local
=
init
(
config
)
# Request instance
print
(
"Requesting %s..."
%
config
.
reference
)
...
...
@@ -257,7 +259,7 @@ def supply():
help
=
"Target node"
)
args
=
parser
.
parse_args
()
config
=
C
onfig
(
args
,
args
.
configuration_file
)
config
=
C
lientConfig
(
args
,
get_config_parser
(
args
.
configuration_file
)
)
_supply
(
args
.
software_url
,
args
.
node
,
init
(
config
))
def
remove
():
...
...
@@ -274,27 +276,11 @@ def remove():
help
=
"Target node"
)
args
=
parser
.
parse_args
()
config
=
C
onfig
(
args
,
args
.
configuration_file
)
config
=
C
lientConfig
(
args
,
get_config_parser
(
args
.
configuration_file
)
)
_supply
(
args
.
software_url
,
args
.
node
,
init
(
config
),
remove
=
True
)
def
slapconsole
():
"""Ran when invoking slapconsole"""
# Parse arguments
usage
=
"""usage: %s [options] CONFIGURATION_FILE
slapconsole allows you interact with slap API. You can play with the global
"slap" object and with the global "request" method.
examples :
>>> # Request instance
>>> request(kvm, "myuniquekvm")
>>> # Request software installation on owned computer
>>> supply(kvm, "mycomputer")
>>> # Fetch instance informations on already launched instance
>>> request(kvm, "myuniquekvm").getConnectionParameter("url")"""
%
sys
.
argv
[
0
]
config
=
Config
(
*
Parser
(
usage
=
usage
).
check_args
())
local
=
init
(
config
)
def
do_console
(
local
):
# try to enable readline with completion and history
try
:
import
readline
...
...
@@ -317,3 +303,23 @@ examples :
__import__
(
"code"
).
interact
(
banner
=
""
,
local
=
local
)
def
slapconsole
():
"""Ran when invoking slapconsole"""
# Parse arguments
usage
=
"""usage: %s [options] CONFIGURATION_FILE
slapconsole allows you interact with slap API. You can play with the global
"slap" object and with the global "request" method.
examples :
>>> # Request instance
>>> request(kvm, "myuniquekvm")
>>> # Request software installation on owned computer
>>> supply(kvm, "mycomputer")
>>> # Fetch instance informations on already launched instance
>>> request(kvm, "myuniquekvm").getConnectionParameter("url")"""
%
sys
.
argv
[
0
]
options
,
configuration_file_path
=
Parser
(
usage
=
usage
).
check_args
()
config
=
ClientConfig
(
options
,
get_config_parser
(
configuration_file_path
))
local
=
init
(
config
)
do_console
(
local
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment