Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
itminedu
synnefo
Commits
eeb70cf2
Commit
eeb70cf2
authored
Mar 26, 2012
by
Kostas Papadimitriou
Browse files
Merge branch '0.9-wip' of
https://code.grnet.gr/git/synnefo
into 0.9-wip
parents
a85119cd
6b97afc2
Changes
15
Hide whitespace changes
Inline
Side-by-side
snf-cyclades-app/synnefo/api/actions.py
View file @
eeb70cf2
...
...
@@ -248,6 +248,11 @@ def get_console(request, vm, args):
if
fwd
[
'status'
]
!=
"OK"
:
raise
ServiceUnavailable
(
'vncauthproxy returned error status'
)
# Verify that the VNC server settings haven't changed
if
not
settings
.
TEST
:
if
console_data
!=
backend
.
get_instance_console
(
vm
):
raise
ServiceUnavailable
(
'VNC Server settings changed.'
)
console
=
{
'type'
:
'vnc'
,
'host'
:
getfqdn
(),
...
...
snf-cyclades-app/synnefo/api/management/__init__.py
0 → 100644
View file @
eeb70cf2
snf-cyclades-app/synnefo/api/management/commands/__init__.py
0 → 100644
View file @
eeb70cf2
snf-cyclades-app/synnefo/api/management/commands/_common.py
0 → 100644
View file @
eeb70cf2
# Copyright 2012 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
from
datetime
import
datetime
from
django.utils.timesince
import
timesince
,
timeuntil
def
format_bool
(
b
):
return
'YES'
if
b
else
'NO'
def
format_date
(
d
):
if
not
d
:
return
''
if
d
<
datetime
.
now
():
return
timesince
(
d
)
+
' ago'
else
:
return
'in '
+
timeuntil
(
d
)
snf-cyclades-app/synnefo/api/management/commands/createflavor.py
0 → 100644
View file @
eeb70cf2
# Copyright 2012 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
from
itertools
import
product
from
django.core.management.base
import
BaseCommand
,
CommandError
from
synnefo.db.models
import
Flavor
from
._common
import
format_bool
,
format_date
class
Command
(
BaseCommand
):
args
=
"<cpu>[,<cpu>,...] "
\
"<ram>[,<ram>,...] "
\
"<disk>[,<disk>,...] "
\
"<disk template>[,<disk template>,...]"
help
=
"Create one or more flavors"
def
handle
(
self
,
*
args
,
**
options
):
if
len
(
args
)
!=
4
:
raise
CommandError
(
"Invalid number of arguments"
)
cpus
=
args
[
0
].
split
(
','
)
rams
=
args
[
1
].
split
(
','
)
disks
=
args
[
2
].
split
(
','
)
templates
=
args
[
3
].
split
(
','
)
flavors
=
[]
for
cpu
,
ram
,
disk
,
template
in
product
(
cpus
,
rams
,
disks
,
templates
):
try
:
flavors
.
append
((
int
(
cpu
),
int
(
ram
),
int
(
disk
),
template
))
except
ValueError
:
raise
CommandError
(
"Invalid values"
)
for
cpu
,
ram
,
disk
,
template
in
flavors
:
flavor
=
Flavor
.
objects
.
create
(
cpu
=
cpu
,
ram
=
ram
,
disk
=
disk
,
disk_template
=
template
)
self
.
stdout
.
write
(
"Created flavor %s
\n
"
%
(
flavor
.
name
,))
snf-cyclades-app/synnefo/api/management/commands/listflavors.py
0 → 100644
View file @
eeb70cf2
# Copyright 2012 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
from
optparse
import
make_option
from
django.core.management.base
import
BaseCommand
,
CommandError
from
synnefo.db.models
import
Flavor
from
._common
import
format_bool
class
Command
(
BaseCommand
):
help
=
"List flavors"
option_list
=
BaseCommand
.
option_list
+
(
make_option
(
'-c'
,
action
=
'store_true'
,
dest
=
'csv'
,
default
=
False
,
help
=
"Use pipes to separate values"
),
)
def
handle
(
self
,
*
args
,
**
options
):
if
args
:
raise
CommandError
(
"Command doesn't accept any arguments"
)
labels
=
(
'id'
,
'name'
,
'cpus'
,
'ram'
,
'disk'
,
'template'
,
'deleted'
)
columns
=
(
3
,
12
,
6
,
6
,
6
,
10
,
7
)
if
not
options
[
'csv'
]:
line
=
' '
.
join
(
l
.
rjust
(
w
)
for
l
,
w
in
zip
(
labels
,
columns
))
self
.
stdout
.
write
(
line
+
'
\n
'
)
sep
=
'-'
*
len
(
line
)
self
.
stdout
.
write
(
sep
+
'
\n
'
)
for
flavor
in
Flavor
.
objects
.
all
():
id
=
str
(
flavor
.
id
)
cpu
=
str
(
flavor
.
cpu
)
ram
=
str
(
flavor
.
ram
)
disk
=
str
(
flavor
.
disk
)
deleted
=
format_bool
(
flavor
.
deleted
)
fields
=
(
id
,
flavor
.
name
,
cpu
,
ram
,
disk
,
flavor
.
disk_template
,
deleted
)
if
options
[
'csv'
]:
line
=
'|'
.
join
(
fields
)
else
:
line
=
' '
.
join
(
f
.
rjust
(
w
)
for
f
,
w
in
zip
(
fields
,
columns
))
self
.
stdout
.
write
(
line
.
encode
(
'utf8'
)
+
'
\n
'
)
snf-cyclades-app/synnefo/api/management/commands/listnetworks.py
0 → 100644
View file @
eeb70cf2
# Copyright 2012 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
from
optparse
import
make_option
from
django.core.management.base
import
BaseCommand
,
CommandError
from
synnefo.db.models
import
Network
from
._common
import
format_bool
class
Command
(
BaseCommand
):
help
=
"List networks"
option_list
=
BaseCommand
.
option_list
+
(
make_option
(
'-c'
,
action
=
'store_true'
,
dest
=
'csv'
,
default
=
False
,
help
=
"Use pipes to separate values"
),
make_option
(
'--deleted'
,
action
=
'store_true'
,
dest
=
'deleted'
,
default
=
False
,
help
=
"List only deleted networks"
),
make_option
(
'--public'
,
action
=
'store_true'
,
dest
=
'public'
,
default
=
False
,
help
=
"List only public networks"
),
)
def
handle
(
self
,
*
args
,
**
options
):
if
args
:
raise
CommandError
(
"Command doesn't accept any arguments"
)
networks
=
Network
.
objects
.
all
()
if
options
[
'deleted'
]:
networks
=
networks
.
filter
(
state
=
'DELETED'
)
else
:
networks
=
networks
.
exclude
(
state
=
'DELETED'
)
if
options
[
'public'
]:
networks
=
networks
.
filter
(
public
=
True
)
labels
=
(
'id'
,
'name'
,
'owner'
,
'state'
,
'link'
,
'vms'
,
'public'
)
columns
=
(
3
,
12
,
20
,
7
,
14
,
4
,
6
)
if
not
options
[
'csv'
]:
line
=
' '
.
join
(
l
.
rjust
(
w
)
for
l
,
w
in
zip
(
labels
,
columns
))
self
.
stdout
.
write
(
line
+
'
\n
'
)
sep
=
'-'
*
len
(
line
)
self
.
stdout
.
write
(
sep
+
'
\n
'
)
for
network
in
networks
:
fields
=
(
str
(
network
.
id
),
network
.
name
,
network
.
userid
or
''
,
network
.
state
,
network
.
link
.
name
,
str
(
network
.
machines
.
count
()),
format_bool
(
network
.
public
))
if
options
[
'csv'
]:
line
=
'|'
.
join
(
fields
)
else
:
line
=
' '
.
join
(
f
.
rjust
(
w
)
for
f
,
w
in
zip
(
fields
,
columns
))
self
.
stdout
.
write
(
line
.
encode
(
'utf8'
)
+
'
\n
'
)
snf-cyclades-app/synnefo/api/management/commands/listservers.py
0 → 100644
View file @
eeb70cf2
# Copyright 2012 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
from
optparse
import
make_option
from
django.core.management.base
import
BaseCommand
,
CommandError
from
synnefo.api.util
import
get_image
from
synnefo.db.models
import
VirtualMachine
class
Command
(
BaseCommand
):
help
=
"List servers"
option_list
=
BaseCommand
.
option_list
+
(
make_option
(
'-c'
,
action
=
'store_true'
,
dest
=
'csv'
,
default
=
False
,
help
=
"Use pipes to separate values"
),
make_option
(
'--build'
,
action
=
'store_true'
,
dest
=
'build'
,
default
=
False
,
help
=
"List only servers in the building state"
),
)
def
handle
(
self
,
*
args
,
**
options
):
if
args
:
raise
CommandError
(
"Command doesn't accept any arguments"
)
servers
=
VirtualMachine
.
objects
.
all
()
if
options
[
'build'
]:
servers
=
servers
.
filter
(
operstate
=
'BUILD'
)
labels
=
(
'id'
,
'name'
,
'owner'
,
'flavor'
,
'image'
,
'state'
)
columns
=
(
3
,
12
,
20
,
11
,
12
,
9
)
if
not
options
[
'csv'
]:
line
=
' '
.
join
(
l
.
rjust
(
w
)
for
l
,
w
in
zip
(
labels
,
columns
))
self
.
stdout
.
write
(
line
+
'
\n
'
)
sep
=
'-'
*
len
(
line
)
self
.
stdout
.
write
(
sep
+
'
\n
'
)
for
server
in
servers
:
id
=
str
(
server
.
id
)
flavor
=
server
.
flavor
.
name
image
=
get_image
(
server
.
imageid
,
server
.
userid
)[
'name'
]
fields
=
(
id
,
server
.
name
,
server
.
userid
,
flavor
,
image
,
server
.
operstate
)
if
options
[
'csv'
]:
line
=
'|'
.
join
(
fields
)
else
:
line
=
' '
.
join
(
f
.
rjust
(
w
)
for
f
,
w
in
zip
(
fields
,
columns
))
self
.
stdout
.
write
(
line
.
encode
(
'utf8'
)
+
'
\n
'
)
snf-cyclades-app/synnefo/api/management/commands/modifyflavor.py
0 → 100644
View file @
eeb70cf2
# Copyright 2012 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
from
optparse
import
make_option
from
django.core.management.base
import
BaseCommand
,
CommandError
from
synnefo.db.models
import
Flavor
class
Command
(
BaseCommand
):
args
=
"<flavor id>"
help
=
"Modify a flavor"
option_list
=
BaseCommand
.
option_list
+
(
make_option
(
'--set-deleted'
,
action
=
'store_true'
,
dest
=
'deleted'
,
help
=
"Mark a server as deleted"
),
make_option
(
'--set-undeleted'
,
action
=
'store_true'
,
dest
=
'undeleted'
,
help
=
"Mark a server as not deleted"
),
)
def
handle
(
self
,
*
args
,
**
options
):
if
len
(
args
)
!=
1
:
raise
CommandError
(
"Please provide a flavor ID"
)
try
:
flavor_id
=
int
(
args
[
0
])
flavor
=
Flavor
.
objects
.
get
(
id
=
flavor_id
)
except
(
ValueError
,
Flavor
.
DoesNotExist
):
raise
CommandError
(
"Invalid flavor ID"
)
if
options
.
get
(
'deleted'
):
flavor
.
deleted
=
True
elif
options
.
get
(
'undeleted'
):
flavor
.
deleted
=
False
flavor
.
save
()
snf-cyclades-app/synnefo/api/management/commands/modifynetwork.py
0 → 100644
View file @
eeb70cf2
# Copyright 2012 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
from
optparse
import
make_option
from
django.core.management.base
import
BaseCommand
,
CommandError
from
synnefo.db.models
import
Network
class
Command
(
BaseCommand
):
args
=
"<network id>"
help
=
"Modify a network"
option_list
=
BaseCommand
.
option_list
+
(
make_option
(
'--name'
,
dest
=
'name'
,
metavar
=
'NAME'
,
help
=
"Set network's name"
),
make_option
(
'--owner'
,
dest
=
'owner'
,
metavar
=
'USER_ID'
,
help
=
"Set network's owner"
),
make_option
(
'--state'
,
dest
=
'state'
,
metavar
=
'STATE'
,
help
=
"Set network's state"
)
)
def
handle
(
self
,
*
args
,
**
options
):
if
len
(
args
)
!=
1
:
raise
CommandError
(
"Please provide a server ID"
)
try
:
network_id
=
int
(
args
[
0
])
network
=
Network
.
objects
.
get
(
id
=
network_id
)
except
(
ValueError
,
Network
.
DoesNotExist
):
raise
CommandError
(
"Invalid network id"
)
name
=
options
.
get
(
'name'
)
if
name
is
not
None
:
network
.
name
=
name
owner
=
options
.
get
(
'owner'
)
if
owner
is
not
None
:
network
.
userid
=
owner
state
=
options
.
get
(
'state'
)
if
state
is
not
None
:
allowed
=
[
x
[
0
]
for
x
in
Network
.
NETWORK_STATES
]
if
state
not
in
allowed
:
msg
=
"Invalid state, must be one of %s"
%
', '
.
join
(
allowed
)
raise
CommandError
(
msg
)
network
.
state
=
state
network
.
save
()
snf-cyclades-app/synnefo/api/management/commands/modifyserver.py
0 → 100644
View file @
eeb70cf2
# Copyright 2012 GRNET S.A. All rights reserved.
#
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above
# copyright notice, this list of conditions and the following
# disclaimer.
#
# 2. Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,