[Ginger] Remove pyflakes checking on .git
by Ramon Medeiros
.git isn't a directory on submodles, it's handler for a directory in
Wok. This will avoid this kind of error:
./.git:1:7: invalid syntax
gitdir: ../../../../.git/modules/src/wok/plugins/<plugin>
^
Signed-off-by: Ramon Medeiros <ramonn(a)linux.vnet.ibm.com>
---
Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index 58abe84..e0c371d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -58,7 +58,7 @@ I18N_FILES = ./i18n.py \
# $ git hash-object -t tree /dev/null
check-local:
contrib/check_i18n.py $(I18N_FILES)
- find . -path './.git' -prune -type f -o \
+ find . -path -prune -type f -o \
-name '*.py' -o -name '*.py.in' | xargs $(PYFLAKES) | \
while read LINE; do echo "$$LINE"; false; done
$(PEP8) --version
--
2.1.0
8 years, 12 months
[Gingerbase] Remove pyflakes checking on .git
by Ramon Medeiros
.git isn't a directory on submodles, it's handler for a directory in
Wok. This will avoid this kind of error:
./.git:1:7: invalid syntax
gitdir: ../../../../.git/modules/src/wok/plugins/<plugin>
^
Signed-off-by: Ramon Medeiros <ramonn(a)linux.vnet.ibm.com>
---
Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index 1f6d703..5e875d1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -58,7 +58,7 @@ I18N_FILES = ./i18n.py \
check-local:
contrib/check_i18n.py $(I18N_FILES)
- find . -path './.git' -prune -type f -o \
+ find . -path -prune -type f -o \
-name '*.py' -o -name '*.py.in' | xargs $(PYFLAKES) | \
while read LINE; do echo "$$LINE"; false; done
--
2.1.0
8 years, 12 months
[Kimchi 0/4 v2] Use single field to add installation media
by Ramon Medeiros
Changes:
v2:
Fix pep8 issues
This patch changes how templates are created. Instead of specifying cdrom and
disks, add them into a single field and kimchi will identify it.
Points to take noteL
1) UI support. Another task will need to change UI for a single entry.
2) Old support for cdrom and disk installation are still available. All tests
are running under tests/test*.
Ramon Medeiros (4):
Create new field to create VM
Method to retrieve stored templates at object store
Fix checking duplicate template before creating it
Identify installation media while creating template
API.json | 5 +++
model/templates.py | 9 ++--
utils.py | 30 +++++++++++++
vmtemplate.py | 121 +++++++++++++++++++++++++++++++++++++++++++++++------
4 files changed, 149 insertions(+), 16 deletions(-)
--
2.1.0
8 years, 12 months
[Kimchi 0/4] Use single field to add installation media
by Ramon Medeiros
This patch changes how templates are created. Instead of specifying cdrom and
disks, add them into a single field and kimchi will identify it.
Points to take noteL
1) UI support. Another task will need to change UI for a single entry.
2) Old support for cdrom and disk installation are still available. All tests
are running under tests/test*.
Ramon Medeiros (4):
Create new field to create VM
Method to retrieve stored templates at object store
Fix checking duplicate template before creating it
Identify installation media while creating template
API.json | 5 +++
model/templates.py | 9 ++--
utils.py | 28 ++++++++++++
vmtemplate.py | 122 +++++++++++++++++++++++++++++++++++++++++++++++------
4 files changed, 146 insertions(+), 18 deletions(-)
--
2.1.0
8 years, 12 months
[PATCH V4] [Wok] Make run_command log its output into a file.
by pvital@linux.vnet.ibm.com
From: Paulo Vital <pvital(a)linux.vnet.ibm.com>
V3 -> V4:
- PEP8 fixes.
V2 -> V3:
- Changed the place of the log_file creation control.
V1 -> V2:
- Removed fixed log file, changing parameter of run_command() method to
accept the path of the log file instead of a boolean.
V1:
Adds the ability of run_command to log the output of a console command into the
file /tmp/wok_tee_log_file, like the "tee" command does.
Using this patch, a command that takes too many time to execute can be monitored
by reading the log file while other tasks are executed.
Paulo Vital (1):
Make run_command log its output into a file.
src/wok/utils.py | 45 +++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 43 insertions(+), 2 deletions(-)
--
2.5.0
8 years, 12 months
[PATCH V3] [Wok] Make run_command log its output into a file.
by pvital@linux.vnet.ibm.com
From: Paulo Vital <pvital(a)linux.vnet.ibm.com>
Adds the ability of run_command to log the output of a console command into a
given file, like the "tee" command does.
Using this patch, a command that takes too many time to execute can be monitored
by reading the log file while other tasks are executed.
Signed-off-by: Paulo Vital <pvital(a)linux.vnet.ibm.com>
---
src/wok/utils.py | 45 ++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 42 insertions(+), 3 deletions(-)
diff --git a/src/wok/utils.py b/src/wok/utils.py
index 7b1b309..c8a6862 100644
--- a/src/wok/utils.py
+++ b/src/wok/utils.py
@@ -135,13 +135,15 @@ def import_module(module_name, class_name=''):
return __import__(module_name, globals(), locals(), [class_name])
-def run_command(cmd, timeout=None, silent=False):
+def run_command(cmd, timeout=None, silent=False, tee=None):
"""
cmd is a sequence of command arguments.
timeout is a float number in seconds.
timeout default value is None, means command run without timeout.
silent is bool, it will log errors using debug handler not error.
silent default value is False.
+ tee is a file path to store the output of the command, like 'tee' command.
+ tee default value is None, means output will not be logged.
"""
# subprocess.kill() can leave descendants running
# and halting the execution. Using psutil to
@@ -159,6 +161,19 @@ def run_command(cmd, timeout=None, silent=False):
else:
timeout_flag[0] = True
+ # function to append the given msg into the log_file
+ def tee_log(msg=None, log_file=None):
+ if (msg is None) or (log_file is None):
+ return
+
+ f = open(log_file, 'a')
+ msg +='\n'
+ try:
+ f.write(msg)
+ except TypeError:
+ f.write(msg.encode('utf_8'))
+ f.close()
+
proc = None
timer = None
timeout_flag = [False]
@@ -171,8 +186,33 @@ def run_command(cmd, timeout=None, silent=False):
timer.setDaemon(True)
timer.start()
- out, error = proc.communicate()
wok_log.debug("Run command: '%s'", " ".join(cmd))
+ if tee is not None:
+ if os.path.exists(tee):
+ os.remove(tee)
+ output = []
+ while True:
+ line = ""
+ try:
+ line = proc.stdout.readline()
+ line = line.decode('utf_8')
+ except Exception:
+ type, e, tb = sys.exc_info()
+ wok_log.error(e)
+ wok_log.error("The output of the command could not be "
+ " decoded as %s\ncmd: %s\n line ignored: %s" %
+ ('utf_8', cmd, repr(line)))
+ pass
+
+ output.append(line)
+ if not line:
+ break
+ line = line.rstrip('\n\r')
+ tee_log(line, tee)
+ out = ''.join(output)
+ error = proc.stderr.read()
+ else:
+ out, error = proc.communicate()
if out:
wok_log.debug("out:\n%s", out)
@@ -219,7 +259,6 @@ def run_command(cmd, timeout=None, silent=False):
if timer and not timeout_flag[0]:
timer.cancel()
-
def parse_cmd_output(output, output_items):
res = []
for line in output.split("\n"):
--
2.5.0
9 years
[PATCH V2] [Wok] Make run_command log its output into a file.
by pvital@linux.vnet.ibm.com
From: Paulo Vital <pvital(a)linux.vnet.ibm.com>
Adds the ability of run_command to log the output of a console command into a
given file, like the "tee" command does.
Using this patch, a command that takes too many time to execute can be monitored
by reading the log file while other tasks are executed.
Signed-off-by: Paulo Vital <pvital(a)linux.vnet.ibm.com>
---
src/wok/utils.py | 45 ++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 42 insertions(+), 3 deletions(-)
diff --git a/src/wok/utils.py b/src/wok/utils.py
index 7b1b309..df48563 100644
--- a/src/wok/utils.py
+++ b/src/wok/utils.py
@@ -135,13 +135,15 @@ def import_module(module_name, class_name=''):
return __import__(module_name, globals(), locals(), [class_name])
-def run_command(cmd, timeout=None, silent=False):
+def run_command(cmd, timeout=None, silent=False, tee=None):
"""
cmd is a sequence of command arguments.
timeout is a float number in seconds.
timeout default value is None, means command run without timeout.
silent is bool, it will log errors using debug handler not error.
silent default value is False.
+ tee is a file path to store the output of the command, like 'tee' command.
+ tee default value is None, means output will not be logged.
"""
# subprocess.kill() can leave descendants running
# and halting the execution. Using psutil to
@@ -159,6 +161,19 @@ def run_command(cmd, timeout=None, silent=False):
else:
timeout_flag[0] = True
+ # function to append the given msg into the log_file
+ def tee_log(msg=None, log_file=None):
+ if (msg is None) or (log_file is None):
+ return
+
+ f = open(log_file, 'a')
+ msg +='\n'
+ try:
+ f.write(msg)
+ except TypeError:
+ f.write(msg.encode('utf_8'))
+ f.close()
+
proc = None
timer = None
timeout_flag = [False]
@@ -171,8 +186,31 @@ def run_command(cmd, timeout=None, silent=False):
timer.setDaemon(True)
timer.start()
- out, error = proc.communicate()
wok_log.debug("Run command: '%s'", " ".join(cmd))
+ if tee is not None:
+ output = []
+ while True:
+ line = ""
+ try:
+ line = proc.stdout.readline()
+ line = line.decode('utf_8')
+ except Exception:
+ type, e, tb = sys.exc_info()
+ wok_log.error(e)
+ wok_log.error("The output of the command could not be "
+ " decoded as %s\ncmd: %s\n line ignored: %s" %
+ ('utf_8', cmd, repr(line)))
+ pass
+
+ output.append(line)
+ if not line:
+ break
+ line = line.rstrip('\n\r')
+ tee_log(line, tee)
+ out = ''.join(output)
+ error = proc.stderr.read()
+ else:
+ out, error = proc.communicate()
if out:
wok_log.debug("out:\n%s", out)
@@ -218,7 +256,8 @@ def run_command(cmd, timeout=None, silent=False):
finally:
if timer and not timeout_flag[0]:
timer.cancel()
-
+ if tee is not None and os.path.exists(tee):
+ os.remove(tee)
def parse_cmd_output(output, output_items):
res = []
--
2.5.0
9 years
[Kimchi] Identify opensuse-LEAP-42.1 ISO
by Ramon Medeiros
Signed-off-by: Ramon Medeiros <ramonn(a)linux.vnet.ibm.com>
---
isoinfo.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/isoinfo.py b/isoinfo.py
index 731c45a..3e04624 100644
--- a/isoinfo.py
+++ b/isoinfo.py
@@ -111,6 +111,8 @@ iso_dir = [
'openSUSE-DVD-i586-Build0039|openSUSE-DVD-x86_640039'),
('opensuse', '12.2',
'openSUSE-DVD-i586-Build0167|openSUSE-DVD-x86_640167'),
+ ('opensuse','42.1',
+ 'openSUSE-Leap-42.1-DVD-x86_64026|openSUSE-Leap-42.1-NET-x86_64026'),
('rhel', '4.8', 'RHEL/4-U8'),
('rhel', lambda m: m.group(2), 'RHEL(-LE)?[_/-](\d+\.\d+)'),
('debian', lambda m: m.group(1), 'Debian (\d+\.\d+)'),
--
2.1.0
9 years
[PATCH] [Kimchi] Adding Gallery View at Templates screen
by andreteodoro.work@gmail.com
From: Andre Teodoro <andreteodoro.work(a)gmail.com>
Adding Gallery View at Templates screen
Andre Teodoro (1):
Adding Gallery View at Templates screen
ui/css/src/modules/_templates.scss | 115 ++++++++++++++++++++++++++++++++++---
ui/js/src/kimchi.template_main.js | 20 ++++++-
ui/pages/tabs/templates.html.tmpl | 17 +++---
3 files changed, 134 insertions(+), 18 deletions(-)
--
1.8.3.1
9 years
[PATCH] [Kimchi V2] Do not rely on python-pip to install build dependencies
by Aline Manera
Thi patch add kimchi.css file to the source control. That way the
build process does not need to rely on python-pip to install build
dependencies.
The python-pip is still required for UI development to install cython
and libsass libraries. They will be needed to generate kimchi.css file
according to changes in .scss files.
When modifying the .scss files, make sure to run:
$ make -C ui/css css
to update kimchi.css accordingly.
Signed-off-by: Aline Manera <alinefm(a)linux.vnet.ibm.com>
---
V1 -> V2:
- Update README.md
---
.gitignore | 1 -
contrib/DEBIAN/control.in | 4 +-
contrib/kimchi.spec.fedora.in | 2 -
contrib/kimchi.spec.suse.in | 2 -
docs/README.md | 28 +-
ui/css/Makefile.am | 6 +-
ui/css/kimchi.css | 2036 +++++++++++++++++++++++++++++++++++++++++
7 files changed, 2063 insertions(+), 16 deletions(-)
create mode 100644 ui/css/kimchi.css
diff --git a/.gitignore b/.gitignore
index d3db739..0cd7265 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,4 +36,3 @@ po/gen-pot
*.rej
*.pem
ui/pages/help/*/*.html
-ui/css/kimchi.css
\ No newline at end of file
diff --git a/contrib/DEBIAN/control.in b/contrib/DEBIAN/control.in
index 6071d0b..b6acdaf 100644
--- a/contrib/DEBIAN/control.in
+++ b/contrib/DEBIAN/control.in
@@ -29,8 +29,6 @@ Depends: wok,
python-paramiko
Build-Depends: xsltproc,
gettext,
- python-lxml,
- python-dev,
- python-pip
+ python-lxml
Maintainer: Aline Manera <alinefm(a)br.ibm.com>
Description: Kimchi web application
diff --git a/contrib/kimchi.spec.fedora.in b/contrib/kimchi.spec.fedora.in
index b30637d..163a702 100644
--- a/contrib/kimchi.spec.fedora.in
+++ b/contrib/kimchi.spec.fedora.in
@@ -34,8 +34,6 @@ Requires: python-paramiko
BuildRequires: gettext-devel
BuildRequires: libxslt
BuildRequires: python-lxml
-BuildRequires: python-devel
-BuildRequires: python-pip
%if 0%{?rhel} >= 6 || 0%{?fedora} >= 19
Requires: spice-html5
diff --git a/contrib/kimchi.spec.suse.in b/contrib/kimchi.spec.suse.in
index e65df67..2206e09 100644
--- a/contrib/kimchi.spec.suse.in
+++ b/contrib/kimchi.spec.suse.in
@@ -34,8 +34,6 @@ Requires: python-paramiko
BuildRequires: gettext-tools
BuildRequires: libxslt-tools
BuildRequires: python-lxml
-BuildRequires: python-devel
-BuildRequires: python-pip
%if 0%{?suse_version} == 1100
Requires: python-ordereddict
diff --git a/docs/README.md b/docs/README.md
index 19ae0b0..1219bbd 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -56,15 +56,19 @@ Install Dependencies
python-websockify novnc spice-html5 \
python-configobj python-magic python-paramiko
- # If using RHEL, install the following additional packages:
- $ sudo yum install python-unittest2 python-ordereddict
+ # If using RHEL, install the following additional packages:
+ $ sudo yum install python-unittest2 python-ordereddict
- # Restart libvirt to allow configuration changes to take effect
- $ sudo service libvirtd restart
+ # Restart libvirt to allow configuration changes to take effect
+ $ sudo service libvirtd restart
# These dependencies are only required if you want to run the tests:
$ sudo yum install pyflakes python-pep8 python-requests python-mock
+ # For UI development
+ $ sudo yum install gcc-c++ python-devel python pip
+ $ sudo pip install cython libsass
+
*Note for RHEL users*: Some of the above packages are located in the Red Hat
EPEL repositories. See
@@ -86,6 +90,10 @@ channel at RHN Classic or Red Hat Satellite.
# These dependencies are only required if you want to run the tests:
$ sudo apt-get install pep8 pyflakes python-requests python-mock
+ # For UI development
+ $ sudo apt-get install g++ python-dev python pip
+ $ sudo pip install cython libsass
+
**For openSUSE:**
$ sudo zypper install wok libvirt-python libvirt gettext-tools \
@@ -98,6 +106,10 @@ channel at RHN Classic or Red Hat Satellite.
# These dependencies are only required if you want to run the tests:
$ sudo zypper install python-pyflakes python-pep8 python-requests python-mock
+ # For UI development
+ $ sudo zypper install python-devel python pip
+ $ sudo pip install cython libsass
+
*Note for openSUSE users*: Some of the above packages are located in different
openSUSE repositories. See
[this FAQ](http://download.opensuse.org/repositories/home:GRNET:synnefo/) for
@@ -173,6 +185,14 @@ Test
After all tests are executed, a summary will be displayed containing any
errors/failures which might have occurred.
+
+UI Development
+----
+Make sure to update the CSS files when modifying the SCSS files by running:
+
+ $ sudo make -C ui/css css
+
+
Usage
-----
diff --git a/ui/css/Makefile.am b/ui/css/Makefile.am
index 47c01fc..5758e59 100644
--- a/ui/css/Makefile.am
+++ b/ui/css/Makefile.am
@@ -18,8 +18,6 @@
cssdir = $(datadir)/wok/plugins/kimchi/ui/css
dist_css_DATA = kimchi.css
-%.css: src/%.scss
+css: src/*.scss src/modules/*.scss
echo "Compiling .scss file $<"
- sassc -s expanded $< $(@:.scss=.css)
-
-CLEANFILES = kimchi.css
+ sassc -s expanded $< kimchi.css
diff --git a/ui/css/kimchi.css b/ui/css/kimchi.css
new file mode 100644
index 0000000..ec57c93
--- /dev/null
+++ b/ui/css/kimchi.css
@@ -0,0 +1,2036 @@
+/*
+ * Project Kimchi
+ *
+ * Copyright IBM, Corp. 2015
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * A partial implementation of the Ruby list functions from Compass:
+ * https://github.com/Compass/compass/blob/stable/lib/compass/sass_extension...
+ */
+/*
+ * A partial implementation of the Ruby constants functions from Compass:
+ * https://github.com/Compass/compass/blob/stable/lib/compass/sass_extension...
+ */
+/*
+ * A partial implementation of the Ruby display functions from Compass:
+ * https://github.com/Compass/compass/blob/stable/core/lib/compass/core/sass...
+ */
+.absolute-middle {
+ margin: auto;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ text-align: center;
+}
+
+.animate-spin {
+ -webkit-animation: spin 2s infinite linear;
+ -o-animation: spin 2s infinite linear;
+ animation: spin 2s infinite linear;
+ display: inline-block;
+}
+
+@keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ -moz-transform: rotate(359deg);
+ -ms-transform: rotate(359deg);
+ -o-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+
+/* Template & Guests Modal Windows */
+#template-add-window.modal-content label.box-iso-outer,
+#guest-add-window.modal-content label.box-iso-outer {
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-size: 14px !important;
+ font-weight: 400;
+ border-radius: 3px;
+ overflow: hidden;
+ display: block;
+ -webkit-user-select: none;
+ user-select: none;
+}
+
+#template-add-window.modal-content label.box-iso-outer span.box-iso-border,
+#guest-add-window.modal-content label.box-iso-outer span.box-iso-border {
+ display: block;
+ border: 3px solid transparent;
+ transition: all .1s ease-in-out;
+}
+
+#template-add-window.modal-content label.box-iso-outer .iso-radio-hidden:checked + span.box-iso-border,
+#template-add-window.modal-content label.box-iso-outer .iso-checkbox-hidden:checked + span.box-iso-border,
+#guest-add-window.modal-content label.box-iso-outer .iso-radio-hidden:checked + span.box-iso-border,
+#guest-add-window.modal-content label.box-iso-outer .iso-checkbox-hidden:checked + span.box-iso-border {
+ border-color: #8cc63f;
+}
+
+#template-add-window.modal-content label.box-iso-outer .iso-radio-hidden:checked + span.box-iso-border > .box-iso-inner,
+#template-add-window.modal-content label.box-iso-outer .iso-checkbox-hidden:checked + span.box-iso-border > .box-iso-inner,
+#guest-add-window.modal-content label.box-iso-outer .iso-radio-hidden:checked + span.box-iso-border > .box-iso-inner,
+#guest-add-window.modal-content label.box-iso-outer .iso-checkbox-hidden:checked + span.box-iso-border > .box-iso-inner {
+ border-color: #000;
+}
+
+#template-add-window.modal-content label.box-iso-outer span.box-iso-inner,
+#guest-add-window.modal-content label.box-iso-outer span.box-iso-inner {
+ display: block;
+ border: 1px solid transparent;
+ background: #fff;
+ transition: all .1s ease-in-out;
+}
+
+#template-add-window.modal-content ul.list-template,
+#template-add-window.modal-content ul.list-iso,
+#guest-add-window.modal-content ul.list-template,
+#guest-add-window.modal-content ul.list-iso {
+ display: block;
+ overflow-x: hidden;
+ overflow-y: auto;
+ max-height: 462px;
+ list-style: none;
+ margin: 0 -5px 10px -5px;
+ padding: 0;
+}
+
+#template-add-window.modal-content label.box-iso-outer span.box-iso-inner dl,
+#guest-add-window.modal-content label.box-iso-outer span.box-iso-inner dl {
+ margin-bottom: 16px;
+}
+
+#template-add-window.modal-content label.box-iso-outer span.box-iso-inner dt,
+#template-add-window.modal-content label.box-iso-outer span.box-iso-inner dd,
+#guest-add-window.modal-content label.box-iso-outer span.box-iso-inner dt,
+#guest-add-window.modal-content label.box-iso-outer span.box-iso-inner dd {
+ padding: 0 12px 0 20px;
+}
+
+#template-add-window.modal-content label.box-iso-outer span.box-iso-inner dt,
+#guest-add-window.modal-content label.box-iso-outer span.box-iso-inner dt {
+ padding-top: 5px;
+ text-transform: capitalize;
+}
+
+#template-add-window.modal-content label.box-iso-outer span.box-iso-inner dd,
+#guest-add-window.modal-content label.box-iso-outer span.box-iso-inner dd {
+ padding-bottom: 5px;
+}
+
+#template-add-window.modal-content ul#templateTile input[type="radio"].iso-radio-hidden,
+#template-add-window.modal-content ul#list-local-iso input[type="checkbox"].iso-checkbox-hidden,
+#template-add-window.modal-content ul#list-remote-iso input[type="checkbox"].iso-checkbox-hidden,
+#guest-add-window.modal-content ul#templateTile input[type="radio"].iso-radio-hidden,
+#guest-add-window.modal-content ul#list-local-iso input[type="checkbox"].iso-checkbox-hidden,
+#guest-add-window.modal-content ul#list-remote-iso input[type="checkbox"].iso-checkbox-hidden {
+ display: none;
+}
+
+#template-add-window.modal-content label.box-iso-outer,
+#guest-add-window.modal-content label.box-iso-outer {
+ cursor: pointer;
+}
+
+#template-add-window.modal-content ul#list-local-iso li.col-md-3,
+#template-add-window.modal-content ul#list-remote-iso li.col-md-3,
+#guest-add-window.modal-content ul#list-local-iso li.col-md-3,
+#guest-add-window.modal-content ul#list-remote-iso li.col-md-3 {
+ width: 241px;
+ margin: 10px 5px 0;
+}
+
+#template-add-window.modal-content h3.iso-title,
+#guest-add-window.modal-content h3.iso-title {
+ font-size: 22px;
+ font-weight: 300;
+ line-height: 22px;
+ margin: 0;
+ padding: 13px 40px 13px 20px;
+ background-color: transparent;
+ background-position: right 10px center;
+ background-repeat: no-repeat;
+ background-size: auto 27px;
+ background-origin: padding-box;
+ max-width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+#template-add-window.modal-content h3.iso-title.centos,
+#guest-add-window.modal-content h3.iso-title.centos {
+ background-image: url("/images/theme-default/icon-centos.png");
+}
+
+#template-add-window.modal-content h3.iso-title.debian,
+#guest-add-window.modal-content h3.iso-title.debian {
+ background-image: url("/images/theme-default/icon-debian.png");
+}
+
+#template-add-window.modal-content h3.iso-title.fedora,
+#guest-add-window.modal-content h3.iso-title.fedora {
+ background-image: url("/images/theme-default/icon-fedora.png");
+}
+
+#template-add-window.modal-content h3.iso-title.opensuse,
+#guest-add-window.modal-content h3.iso-title.opensuse {
+ background-image: url("/images/theme-default/icon-opensuse.png");
+}
+
+#template-add-window.modal-content h3.iso-title.ubuntu,
+#guest-add-window.modal-content h3.iso-title.ubuntu {
+ background-image: url("/images/theme-default/icon-ubuntu.png");
+}
+
+#template-add-window.modal-content h3.iso-title.gentoo,
+#guest-add-window.modal-content h3.iso-title.gentoo {
+ background-image: url("/images/theme-default/icon-gentoo.png");
+}
+
+#template-add-window.modal-content h3.iso-title.unknown,
+#guest-add-window.modal-content h3.iso-title.unknown {
+ background-image: url("/images/theme-default/icon-unknown.png");
+}
+
+/* Create Guest Modal */
+.guests-modal .modal-dialog {
+ width: 1100px;
+}
+
+.guests-modal .page-list {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ overflow: hidden;
+}
+
+.guests-modal .page {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ overflow: auto;
+ padding: 10px 30px;
+}
+
+#guest-add-window .modal-body {
+ margin: 0;
+ padding: 0;
+}
+
+#guest-add-window .modal-footer {
+ margin-top: 0;
+}
+
+#guest-add-window .modal-footer .btn + .btn {
+ margin-left: 0;
+}
+
+#guest-add-window .modal-footer .btn {
+ margin-right: 5px;
+}
+
+#guest-add-window .modal-dialog {
+ width: 900px;
+}
+
+#guest-add-window .guest-modal-container {
+ padding: 10px 30px;
+ position: relative;
+}
+
+#guest-add-window .guest-pager {
+ background: #eee;
+ overflow: hidden;
+ position: relative;
+ height: 530px;
+}
+
+#guest-add-window.modal-content p {
+ margin: 0 0 10px 0;
+}
+
+#guest-add-window.modal-content h5 {
+ font-size: 13pt;
+ font-weight: 400;
+ margin-top: 0;
+}
+
+#guest-add-window.modal-content label {
+ font-size: 16px;
+ font-weight: 400;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+}
+
+#guest-add-window form#form-vm-add {
+ margin: 0;
+}
+
+#guest-add-window input#guest-vm-name,
+#guest-add-window p.help-block {
+ width: 592px;
+}
+
+#guest-content-container .wok-guest-list {
+ display: block;
+ width: 100%;
+ padding: 0;
+ list-style-type: none;
+}
+
+#guest-content-container .wok-guest-list > li:nth-child(even) {
+ background-color: #fcfcfc;
+}
+
+#guest-content-container .wok-guest-list > li:nth-child(odd) {
+ background-color: #fff;
+}
+
+#guest-content-container .wok-guest-list > li:first-child {
+ border-top: 0;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header {
+ border-top: 0 none;
+ height: 36px;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span {
+ height: 36px;
+ padding: 6px 2px;
+ display: inline-block;
+ vertical-align: middle;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-weight: 300;
+ font-size: 12.5pt;
+ line-height: 1.42857;
+ border-bottom: none;
+ border-top: 0;
+ overflow: hidden;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span > span {
+ width: 100%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ display: block;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body {
+ border-top: 1px solid #eee;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body > span {
+ padding: 6px 2px;
+ display: inline-block;
+ vertical-align: middle;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-size: 12.5pt;
+ line-height: 2.42857;
+ font-weight: 400;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body .progress {
+ display: inline-block;
+ width: 60%;
+ position: relative;
+ vertical-align: top;
+ margin-top: 15px;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body .progress-bar {
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body .progress-bar.dark-grey {
+ background-color: #929497;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body .progress-bar.medium-grey {
+ background-color: #bbbdbf;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body .progress-bar.light-grey {
+ background-color: #e6e7e8;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body div.percentage-label {
+ display: inline-block;
+ width: 25%;
+ margin-top: 6px;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body div.measure-label {
+ display: inline-block;
+ width: 35%;
+ margin-top: 6px;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state {
+ width: 40px;
+ text-align: center;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state {
+ font-size: 22px;
+ position: relative;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.running > .fa-ban,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.running > .fa-ban {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.running > .fa-power-off,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.running > .fa-power-off {
+ color: #a8d46f;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.running > .fa-undo,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.running > .fa-undo {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.running > .fa-refresh,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.running > .fa-refresh {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.shutoff > .fa-ban,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.shutoff > .fa-ban {
+ color: #999;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.shutoff > .fa-power-off,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.shutoff > .fa-power-off {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.shutoff > .fa-undo,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.shutoff > .fa-undo {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.shutoff > .fa-refresh,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.shutoff > .fa-refresh {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.starting > .fa-ban,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.starting > .fa-ban {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.starting > .fa-power-off,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.starting > .fa-power-off {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.starting > .fa-undo,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.starting > .fa-undo {
+ color: #999;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.starting > .fa-refresh,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.starting > .fa-refresh {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.resetting > .fa-ban,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.resetting > .fa-ban {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.resetting > .fa-power-off,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.resetting > .fa-power-off {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.resetting > .fa-undo,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.resetting > .fa-undo {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.resetting > .fa-refresh,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.resetting > .fa-refresh {
+ color: #a8d46f;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-state > span.guest-state.paused > .fa,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-state > span.guest-state.paused > .fa {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-name,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-name {
+ width: 13.7%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+@media (min-width: 1330px) {
+ #guest-content-container .wok-guest-list .wok-guest-list-header > span.column-name,
+ #guest-content-container .wok-guest-list .wok-guest-list-body > span.column-name {
+ width: 9.7%;
+ }
+}
+
+@media (min-width: 1540px) {
+ #guest-content-container .wok-guest-list .wok-guest-list-header > span.column-name,
+ #guest-content-container .wok-guest-list .wok-guest-list-body > span.column-name {
+ width: 14.15%;
+ }
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-type,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-type {
+ width: 11.74%;
+ background-position: 0 50%;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+@media (min-width: 1330px) {
+ #guest-content-container .wok-guest-list .wok-guest-list-header > span.column-type,
+ #guest-content-container .wok-guest-list .wok-guest-list-body > span.column-type {
+ width: 10.74%;
+ }
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-vnc,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-vnc {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-vnc > a,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-vnc > a {
+ font-weight: normal;
+ color: #5ab3d4 !important;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-vnc .fa-spin,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-vnc .fa-spin {
+ display: none;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-vnc .fa-spin.active,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-vnc .fa-spin.active {
+ display: inline-block;
+ margin-right: 8px;
+ font-size: 22px;
+ color: #5ab3d4 !important;
+}
+
+@media (min-width: 1330px) {
+ #guest-content-container .wok-guest-list .wok-guest-list-header > span.column-vnc,
+ #guest-content-container .wok-guest-list .wok-guest-list-body > span.column-vnc {
+ width: 10.84%;
+ display: inline-block;
+ }
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-processors,
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-memory,
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-storage,
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-network,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-processors,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-memory,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-storage,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-network {
+ width: 12.5%;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-processors > div > div.progress-bar.cpu-progress-bar,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-processors > div > div.progress-bar.cpu-progress-bar {
+ background-color: #d9182d;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-memory > div > div.progress-bar.memory-progress-bar,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-memory > div > div.progress-bar.memory-progress-bar {
+ background-color: #008abf;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-storage > div > div.progress-bar.storage-progress-bar,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-storage > div > div.progress-bar.storage-progress-bar {
+ background-color: #fdb813;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-network > div > div.progress-bar.network-progress-bar,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-network > div > div.progress-bar.network-progress-bar {
+ background-color: #7f1c7d;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.column-action,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.column-action {
+ width: 165px;
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-header > span.item-hidden,
+#guest-content-container .wok-guest-list .wok-guest-list-body > span.item-hidden {
+ display: none !important;
+}
+
+#guest-content-container .wok-guest-list .distro-icon {
+ background-color: transparent;
+ background-size: 27px 27px;
+ background-repeat: no-repeat;
+ background-position: left;
+}
+
+#guest-content-container .wok-guest-list .distro-icon.inactive {
+ -webkit-filter: grayscale(100%) contrast(0.8) brightness(110%);
+ -moz-filter: grayscale(100%) contrast(0.8) brightness(110%);
+ filter: grayscale(100%) contrast(0.8) brightness(110%);
+}
+
+#guest-content-container .wok-guest-list .distro-icon.icon-centos {
+ background-image: url("/images/theme-default/icon-centos.png");
+}
+
+#guest-content-container .wok-guest-list .distro-icon.icon-debian {
+ background-image: url("/images/theme-default/icon-debian.png");
+}
+
+#guest-content-container .wok-guest-list .distro-icon.icon-fedora {
+ background-image: url("/images/theme-default/icon-fedora.png");
+}
+
+#guest-content-container .wok-guest-list .distro-icon.icon-opensuse {
+ background-image: url("/images/theme-default/icon-opensuse.png");
+}
+
+#guest-content-container .wok-guest-list .distro-icon.icon-ubuntu {
+ background-image: url("/images/theme-default/icon-ubuntu.png");
+}
+
+#guest-content-container .wok-guest-list .distro-icon.icon-gentoo {
+ background-image: url("/images/theme-default/icon-gentoo.png");
+}
+
+#guest-content-container .wok-guest-list .distro-icon.icon-unknown {
+ background-image: url("/images/theme-default/icon-unknown.png");
+}
+
+#guest-content-container .wok-guest-list .wok-guest-list-body.inactive {
+ color: #999 !important;
+}
+
+#guest-edit-window .tab-content {
+ overflow: hidden;
+ height: 559px;
+}
+
+#guest-edit-window .tab-content .tab-pane {
+ position: relative;
+}
+
+#guest-edit-window #form-guest-edit-interface .column-actions {
+ width: 23%;
+}
+
+#guest-edit-window #form-guest-edit-storage .column-actions {
+ width: 26%;
+}
+
+#guest-edit-window #form-guest-edit-snapshot .column-actions {
+ width: 22%;
+}
+
+#guest-edit-window #form-guest-edit-pci .column-actions {
+ width: 4.47%;
+}
+
+#guest-edit-window form {
+ margin: 15px 0 0;
+}
+
+#guest-edit-window form .header .column-actions,
+#guest-edit-window form .task .column-actions,
+#guest-edit-window form .body .column-actions {
+ text-align: right;
+}
+
+#guest-edit-window form .header .column-device,
+#guest-edit-window form .task .column-device,
+#guest-edit-window form .body .column-device {
+ width: 12.7%;
+}
+
+#guest-edit-window form .header .column-path,
+#guest-edit-window form .task .column-path,
+#guest-edit-window form .body .column-path {
+ width: 60.25%;
+}
+
+#guest-edit-window form .header .cell.column-network,
+#guest-edit-window form .task .cell.column-network,
+#guest-edit-window form .body .cell.column-network {
+ width: 18%;
+}
+
+#guest-edit-window form .header .cell.column-network > span,
+#guest-edit-window form .task .cell.column-network > span,
+#guest-edit-window form .body .cell.column-network > span {
+ width: 100%;
+ display: inline-block;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+
+#guest-edit-window form .header .cell.column-network .bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn),
+#guest-edit-window form .task .cell.column-network .bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn),
+#guest-edit-window form .body .cell.column-network .bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn) {
+ width: 180px;
+}
+
+#guest-edit-window form .header .cell.column-type,
+#guest-edit-window form .task .cell.column-type,
+#guest-edit-window form .body .cell.column-type {
+ width: 11.35%;
+}
+
+#guest-edit-window form .header .cell.column-mac,
+#guest-edit-window form .task .cell.column-mac,
+#guest-edit-window form .body .cell.column-mac {
+ width: 14.5%;
+}
+
+#guest-edit-window form .header .cell.column-ip,
+#guest-edit-window form .task .cell.column-ip,
+#guest-edit-window form .body .cell.column-ip {
+ width: 31%;
+}
+
+#guest-edit-window form .header .cell.column-sel,
+#guest-edit-window form .task .cell.column-sel,
+#guest-edit-window form .body .cell.column-sel {
+ width: 1.77%;
+}
+
+#guest-edit-window form .header .cell.column-snapshot-name,
+#guest-edit-window form .task .cell.column-snapshot-name,
+#guest-edit-window form .body .cell.column-snapshot-name {
+ width: 58%;
+}
+
+#guest-edit-window form .header .cell.column-snapshot-created,
+#guest-edit-window form .task .cell.column-snapshot-created,
+#guest-edit-window form .body .cell.column-snapshot-created {
+ width: 16.5%;
+}
+
+#guest-edit-window form .header .cell.column-pci-status,
+#guest-edit-window form .task .cell.column-pci-status,
+#guest-edit-window form .body .cell.column-pci-status {
+ width: 3.7%;
+}
+
+#guest-edit-window form .header .cell.column-pci-status .fa,
+#guest-edit-window form .task .cell.column-pci-status .fa,
+#guest-edit-window form .body .cell.column-pci-status .fa {
+ color: #8cc63f;
+ font-size: 24px;
+}
+
+#guest-edit-window form .header .cell.column-pci-name,
+#guest-edit-window form .task .cell.column-pci-name,
+#guest-edit-window form .body .cell.column-pci-name {
+ width: 21%;
+}
+
+#guest-edit-window form .header .cell.column-product,
+#guest-edit-window form .task .cell.column-product,
+#guest-edit-window form .body .cell.column-product {
+ width: 45%;
+}
+
+#guest-edit-window form .header .cell.column-vendor,
+#guest-edit-window form .task .cell.column-vendor,
+#guest-edit-window form .body .cell.column-vendor {
+ width: 24.1%;
+}
+
+#guest-edit-window form .header {
+ background: #fff;
+ display: block;
+ border-bottom: 1px solid #eee;
+ overflow: hidden;
+ clear: both;
+}
+
+#guest-edit-window form .header > span {
+ padding: 6px 2px;
+ display: inline-block;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-weight: 400;
+ font-size: 12.5pt;
+ vertical-align: bottom;
+ border-bottom: none;
+ border-top: 0;
+ line-height: 1.42857;
+}
+
+#guest-edit-window form .header > span.column-actions {
+ height: 36px;
+}
+
+#guest-edit-window form .body {
+ overflow-y: auto;
+ overflow-x: hidden;
+ height: 471px;
+}
+
+#guest-edit-window form .body .item,
+#guest-edit-window form .task .item {
+ border-top: 1px solid #eee;
+ height: 53px;
+}
+
+#guest-edit-window form .body .item:first-child,
+#guest-edit-window form .task .item:first-child {
+ border-top: 0;
+}
+
+#guest-edit-window form .body .item:nth-child(even),
+#guest-edit-window form .task .item:nth-child(even) {
+ background-color: #fcfcfc;
+}
+
+#guest-edit-window form .body .item:nth-child(odd),
+#guest-edit-window form .task .item:nth-child(odd) {
+ background-color: #fff;
+}
+
+#guest-edit-window form .body .item > span,
+#guest-edit-window form .task .item > span {
+ padding: 6px 2px;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+#guest-edit-window form .body .item > span input[type="text"],
+#guest-edit-window form .task .item > span input[type="text"] {
+ height: 40px;
+}
+
+#guest-edit-window form .body .item > span input[readonly],
+#guest-edit-window form .body .item > span input[readonly]:hover,
+#guest-edit-window form .body .item > span input[readonly]:focus,
+#guest-edit-window form .body .item > span input[readonly]:active,
+#guest-edit-window form .task .item > span input[readonly],
+#guest-edit-window form .task .item > span input[readonly]:hover,
+#guest-edit-window form .task .item > span input[readonly]:focus,
+#guest-edit-window form .task .item > span input[readonly]:active {
+ background-color: transparent !important;
+ border-color: transparent !important;
+ box-shadow: none !important;
+ border-radius: 0 !important;
+ text-overflow: ellipsis;
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ width: 100%;
+}
+
+.guest-edit-snapshot .hide,
+.guest-edit-interface .hide {
+ display: none !important;
+}
+
+.guest-edit-pci .filter {
+ height: 40px;
+ overflow: visible;
+ clear: both;
+}
+
+.guest-edit-pci .pull-right .bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn) {
+ width: 133px;
+}
+
+.guest-edit-pci .filter input[type="text"].form-control {
+ width: 460px;
+ height: 40px;
+ float: right;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.guest-edit-pci .filter .bootstrap-select.btn-group .btn .caret {
+ border-left: 0;
+}
+
+.guest-edit-pci .filter button.btn.dropdown-toggle.form-control.selectpicker.btn-default {
+ border-top-right-radius: 0 !important;
+ border-bottom-right-radius: 0 !important;
+ background: #fcfcfc;
+ border-right: 0;
+}
+
+.guest-edit-pci .body {
+ overflow-y: auto;
+ overflow-x: hidden;
+ height: 442px !important;
+}
+
+.guest-edit-pci .body .item.disabled input[type="text"].form-control {
+ color: #999;
+}
+
+.guest-edit-pci .body .item.disabled span.column-pci-status i {
+ display: none;
+}
+
+.guest-edit-permission .pam {
+ height: 540px;
+}
+
+.guest-edit-permission .pam .column {
+ display: inline-block;
+ vertical-align: top;
+}
+
+.guest-edit-permission .pam .v-center {
+ min-height: 532px;
+ display: flex;
+ justify-content: center;
+ flex-flow: column wrap;
+}
+
+.guest-edit-permission .pam .center-block {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.guest-edit-permission .pam .center-block + .center-block {
+ margin-top: 5px;
+}
+
+.guest-edit-permission .pam .title {
+ font-size: 13pt;
+}
+
+.guest-edit-permission .pam .body {
+ margin-top: 4px;
+ border-radius: 3px;
+ border: 1px solid #eee;
+ height: 460px !important;
+}
+
+.guest-edit-permission .pam .body .head .item {
+ display: block;
+ padding: 6px 2px;
+ margin-bottom: 5px;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-weight: 400;
+ font-size: 12.5pt;
+ vertical-align: bottom;
+ line-height: 1.42857;
+ height: auto !important;
+ background: #fff;
+ border-top: 0;
+ border-bottom: 1px solid #eee;
+ cursor: default;
+}
+
+.guest-edit-permission .pam .body > .column-user .item,
+.guest-edit-permission .pam .body > .column-group .item {
+ height: auto !important;
+ margin-bottom: 0;
+ margin-left: 5px;
+}
+
+.guest-edit-permission .pam .body > .column-group .item {
+ margin-right: 5px;
+}
+
+.guest-edit-permission .pam .column-user label,
+.guest-edit-permission .pam .column-group label {
+ cursor: pointer;
+ margin-bottom: 0;
+ margin-left: 5px;
+ width: 160px;
+ height: 24px;
+ line-height: 22px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: middle;
+}
+
+.guest-edit-permission .pam .body > .column .item {
+ background-color: #fff !important;
+ border: 1px solid #eee !important;
+ margin-bottom: 3px;
+ display: block;
+ padding: .2em .6em .3em;
+ font-weight: 700;
+ line-height: 1;
+ text-align: left;
+ white-space: nowrap;
+ vertical-align: middle;
+ border-radius: .25em;
+ overflow: hidden;
+}
+
+.guest-edit-permission .pam .body > .column .item:hover {
+ color: #444 !important;
+ background-color: #e6e6e6 !important;
+ border-color: #adadad !important;
+}
+
+.guest-edit-permission .pam .body > .column .item:hover label {
+ color: #444 !important;
+}
+
+.guest-edit-permission .pam .body > .column .item.item-picked {
+ color: #fff !important;
+ background-color: #3a393b !important;
+ border-color: #1b1b1c !important;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.guest-edit-permission .pam .body > .column .item.item-picked label {
+ color: #fff !important;
+}
+
+.guest-edit-permission .hide {
+ display: none;
+}
+
+#form-guest-edit-permission .ldap .body .item {
+ margin: 8px 0;
+}
+
+#form-guest-edit-permission .ldap .cell {
+ width: 250px;
+}
+
+#form-guest-edit-permission .ldap .action-area {
+ float: right;
+ line-height: 24px;
+}
+
+#form-guest-edit-permission .ldap .header button {
+ margin-bottom: 1px;
+}
+
+#form-guest-edit-permission .ldap .checked {
+ border-color: red;
+ border-style: solid;
+ border-width: 1px;
+}
+
+#form-guest-edit-permission .ldap .checked.hide {
+ display: none;
+}
+
+#form-guest-storage-add .form-section .field {
+ overflow: visible;
+}
+
+/* Add Template Modal Window */
+.templates-modal .modal-dialog {
+ width: 1100px;
+}
+
+.templates-modal .page-list {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ overflow: hidden;
+}
+
+.templates-modal .page {
+ position: absolute;
+ left: 100%;
+ width: 100%;
+ height: 100%;
+ overflow: auto;
+ padding: 10px 30px;
+}
+
+#template-edit-window .tab-content .tab-pane {
+ position: relative;
+}
+
+#template-edit-window form {
+ margin: 15px 0 0;
+}
+
+#template-edit-window .hide {
+ display: none;
+}
+
+#template-edit-window .form-template-inline-wrapper {
+ display: inline-block;
+ vertical-align: top;
+}
+
+#template-edit-window .template-edit-wrapper-label {
+ vertical-align: top;
+ min-width: 100px;
+ height: 35px;
+ line-height: 35px;
+ margin: 7px 0 8px;
+}
+
+#template-edit-window .template-edit-wrapper-controls {
+ vertical-align: top;
+ width: 400px;
+ vertical-align: top;
+ min-width: 100px;
+ height: 35px;
+ line-height: 35px;
+ margin: 7px 0 8px;
+}
+
+#template-edit-window .template-tab-header {
+ background: #fff;
+ display: block;
+ border-bottom: 1px solid #eee;
+}
+
+#template-edit-window .template-tab-header > span {
+ padding: 6px 2px;
+ display: inline-block;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-weight: 400;
+ font-size: 12.5pt;
+ vertical-align: baseline;
+ border-bottom: none;
+ border-top: 0;
+ line-height: 42px;
+ height: 42px;
+}
+
+#template-edit-window .template-tab-body .item {
+ border-top: 1px solid #eee;
+ height: 53px;
+}
+
+#template-edit-window .template-tab-body .item:first-child {
+ border-top: 0;
+}
+
+#template-edit-window .template-tab-body .item:nth-child(even) {
+ background-color: #fcfcfc;
+}
+
+#template-edit-window .template-tab-body .item:nth-child(odd) {
+ background-color: #fff;
+}
+
+#template-edit-window .template-tab-body .item > span {
+ padding: 6px 2px;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+#template-edit-window .template-tab-body .item > span input[type="text"].form-control {
+ height: 40px;
+}
+
+#template-edit-window .manual {
+ margin-top: 5px;
+ margin-bottom: 10px;
+}
+
+#template-edit-window .topology {
+ margin: 0 24px;
+}
+
+#template-edit-window .topology .form-inline {
+ margin-bottom: 10px;
+}
+
+#template-edit-window .template-storage-cell.storage-pool {
+ width: 220px !important;
+}
+
+#template-edit-window .template-storage-cell.type {
+ width: 100px;
+}
+
+#template-edit-window .template-storage-cell.disk {
+ width: 100px;
+}
+
+#template-edit-window .template-storage-cell.format {
+ width: 320px;
+}
+
+#template-edit-window .template-interface-cell.network {
+ width: 220px;
+}
+
+#template-edit-window .template-interface-cell.type {
+ width: 250px;
+}
+
+#template-add-window .modal-body {
+ margin: 0;
+ padding: 0;
+}
+
+#template-add-window .modal-footer {
+ margin-top: 0;
+}
+
+#template-add-window .modal-footer .btn + .btn {
+ margin-left: 0;
+}
+
+#template-add-window .modal-footer .btn {
+ margin-right: 5px;
+}
+
+#template-add-window .template-modal-container {
+ padding: 10px 30px;
+ position: relative;
+}
+
+#template-add-window .template-pager {
+ background: #eee;
+ width: 1082px;
+ height: 689px;
+ position: relative;
+ overflow: hidden;
+}
+
+#template-add-window .template-pager-container {
+ position: absolute;
+ height: 664px;
+ width: 2164px;
+ left: 0;
+ transition: left .2s ease-in-out;
+}
+
+#template-add-window.modal-content p {
+ margin: 0;
+}
+
+#template-add-window.modal-content h5 {
+ font-size: 13pt;
+ font-weight: 400;
+ margin-top: 0;
+}
+
+#template-add-window.modal-content label {
+ font-size: 16px;
+ font-weight: 400;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+}
+
+#template-add-window.modal-content button#iso-more,
+#template-add-window.modal-content button#iso-more-loading {
+ margin-bottom: 17px;
+ clear: both;
+}
+
+#template-add-window.modal-content div#iso-remote-box {
+ left: 1082px;
+}
+
+#template-add-window.modal-content div#iso-local-box {
+ left: 0;
+}
+
+/* VM List View classes*/
+#templates-root-container .wok-vm-list {
+ display: block;
+ width: 100%;
+ list-style-type: none;
+ margin: 0;
+ padding-left: 0;
+ background: #fff;
+}
+
+#templates-root-container .wok-vm-list .wok-vm-header {
+ border-bottom: 1px solid #e3e3e3;
+}
+
+#templates-root-container .wok-vm-list .wok-vm-header > span {
+ padding: 6px 2px;
+ display: inline-block;
+ vertical-align: bottom;
+ height: 36px;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-weight: 300;
+ font-size: 12.5pt;
+ line-height: 1.42857;
+ border-bottom: none;
+ border-top: 0;
+ background-color: #fff;
+}
+
+#templates-root-container .wok-vm-list .wok-vm-body {
+ clear: both;
+ border-top: 1px solid #eee;
+}
+
+#templates-root-container .wok-vm-list .wok-vm-body:first-child {
+ border-top: 0;
+}
+
+#templates-root-container .wok-vm-list .wok-vm-body > span {
+ padding: 6px 2px;
+ display: inline-block;
+ vertical-align: top;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-size: 12.5pt;
+ line-height: 2.42857;
+ font-weight: 400;
+}
+
+#templates-root-container .wok-vm-list .wok-vm-body .column-type {
+ padding-left: 40px !important;
+}
+
+#templates-root-container .wok-vm-list .ul-body {
+ display: block;
+ width: 100%;
+ clear: both;
+ padding: 0;
+ margin: 0;
+ list-style: none;
+}
+
+#templates-root-container .wok-vm-list .ul-body > li:nth-child(even) {
+ background-color: #fcfcfc;
+}
+
+#templates-root-container .wok-vm-list .ul-body > li:nth-child(odd) {
+ background-color: #fff;
+}
+
+#templates-root-container .wok-vm-list .column-name {
+ width: 17.4900%;
+ font-weight: bold;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+#templates-root-container .wok-vm-list .column-type {
+ width: 14.2435%;
+ font-weight: bold;
+}
+
+#templates-root-container .wok-vm-list .column-version {
+ width: 14.2435%;
+ font-weight: bold;
+}
+
+#templates-root-container .wok-vm-list .column-processors {
+ width: 12.8413%;
+}
+
+#templates-root-container .wok-vm-list .column-memory {
+ width: 7.3800%;
+}
+
+#templates-root-container .wok-vm-list .column-action {
+ width: 33.8000%;
+}
+
+#templates-root-container .wok-vm-list .item-hidden {
+ display: none !important;
+}
+
+#templates-root-container .wok-vm-list .distro-icon {
+ background-color: transparent;
+ background-size: 27px 27px;
+ background-repeat: no-repeat;
+ background-position: 8px 50%;
+}
+
+#templates-root-container .wok-vm-list .distro-icon.icon-centos {
+ background-image: url("/images/theme-default/icon-centos.png");
+}
+
+#templates-root-container .wok-vm-list .distro-icon.icon-debian {
+ background-image: url("/images/theme-default/icon-debian.png");
+}
+
+#templates-root-container .wok-vm-list .distro-icon.icon-fedora {
+ background-image: url("/images/theme-default/icon-fedora.png");
+}
+
+#templates-root-container .wok-vm-list .distro-icon.icon-opensuse {
+ background-image: url("/images/theme-default/icon-opensuse.png");
+}
+
+#templates-root-container .wok-vm-list .distro-icon.icon-ubuntu {
+ background-image: url("/images/theme-default/icon-ubuntu.png");
+}
+
+#templates-root-container .wok-vm-list .distro-icon.icon-gentoo {
+ background-image: url("/images/theme-default/icon-gentoo.png");
+}
+
+#templates-root-container .wok-vm-list .distro-icon.icon-unknown {
+ background-image: url("/images/theme-default/icon-unknown.png");
+}
+
+#templates-root-container .wok-vm-gallery {
+ display: block;
+ width: 100%;
+ list-style-type: none;
+ margin: 0;
+ padding-left: 5px;
+}
+
+#templates-root-container .wok-vm-gallery .wok-vm-header {
+ display: none;
+}
+
+#templates-root-container .wok-vm-gallery .wok-vm-body {
+ padding: 0 20px 0 20px;
+ width: 240px;
+ display: inline-block;
+ border: 1px solid #e3e3e3;
+ margin-right: 20px;
+}
+
+#templates-root-container .wok-vm-gallery .wok-vm-body > span {
+ display: inline-block;
+ width: 100%;
+ font-family: "Open Sans", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-size: 12.5pt;
+ line-height: 1.42857;
+ font-weight: 400;
+}
+
+#templates-root-container .wok-vm-gallery .ul-body {
+ display: inline-block;
+ padding: 0;
+ margin: 0;
+ list-style: none;
+}
+
+#templates-root-container .wok-vm-gallery .column-name {
+ line-height: 2.5 !important;
+ font-size: 15.3pt !important;
+ font-weight: 500 !important;
+ text-overflow: ellipsis !important;
+ overflow: hidden !important;
+ padding-right: 35px !important;
+}
+
+#templates-root-container .wok-vm-gallery .item-hidden.column-type, #templates-root-container .wok-vm-gallery .item-hidden.column-version, #templates-root-container .wok-vm-gallery .item-hidden.column-processors {
+ padding-bottom: 11px;
+}
+
+#templates-root-container .wok-vm-gallery .item-hidden.column-memory {
+ padding-bottom: 38px;
+}
+
+#templates-root-container .wok-vm-gallery .font-bold {
+ font-weight: bold !important;
+}
+
+#templates-root-container .wok-vm-gallery .pull-right {
+ float: none !important;
+ padding-bottom: 22px;
+}
+
+#templates-root-container .wok-vm-gallery .dropdown-menu {
+ width: 100%;
+}
+
+#templates-root-container .wok-vm-gallery .menu-flat {
+ width: 239px;
+ margin-left: -20px;
+}
+
+#templates-root-container .wok-vm-gallery .btn {
+ width: 100%;
+ text-align: left;
+ padding-left: 42px;
+ border-radius: 0;
+}
+
+#templates-root-container .wok-vm-gallery .name-distro-icon {
+ background-color: transparent;
+ background-size: 32px 32px;
+ background-repeat: no-repeat;
+ background-position: 100% 50%;
+}
+
+#templates-root-container .wok-vm-gallery .name-distro-icon.icon-centos {
+ background-image: url("/images/theme-default/icon-centos.png");
+}
+
+#templates-root-container .wok-vm-gallery .name-distro-icon.icon-debian {
+ background-image: url("/images/theme-default/icon-debian.png");
+}
+
+#templates-root-container .wok-vm-gallery .name-distro-icon.icon-fedora {
+ background-image: url("/images/theme-default/icon-fedora.png");
+}
+
+#templates-root-container .wok-vm-gallery .name-distro-icon.icon-opensuse {
+ background-image: url("/images/theme-default/icon-opensuse.png");
+}
+
+#templates-root-container .wok-vm-gallery .name-distro-icon.icon-ubuntu {
+ background-image: url("/images/theme-default/icon-ubuntu.png");
+}
+
+#templates-root-container .wok-vm-gallery .name-distro-icon.icon-gentoo {
+ background-image: url("/images/theme-default/icon-gentoo.png");
+}
+
+#templates-root-container .wok-vm-gallery .name-distro-icon.icon-unknown {
+ background-image: url("/images/theme-default/icon-unknown.png");
+}
+
+.network-config input.invalid-field[type="text"] {
+ border-color: #FF4444;
+}
+
+.network-config input.invalid-field[type="text"][disabled] {
+ border-color: #666666;
+}
+
+#add-network-window #vlan-enabled {
+ padding-left: 26px;
+}
+
+#add-network-window #vlan-enabled label, #add-network-window #vlan-enabled input[type="text"] {
+ display: block;
+}
+
+#network-root-container .wok-nw-loading-icon {
+ background: transparent url("/images/theme-default/spin5.svg") no-repeat 50% 50%;
+ -webkit-animation: spin 3s infinite linear;
+ -o-animation: spin 3s infinite linear;
+ animation: spin 3s infinite linear;
+ height: 16px;
+ width: 16px;
+ background-size: 100%;
+ display: block;
+ position: relative;
+ top: 12px;
+ left: 50%;
+ margin-left: -8px;
+}
+
+#network-root-container .up .wok-nw-loading-icon,
+#network-root-container .down .wok-nw-loading-icon {
+ display: none;
+}
+
+#network-root-container .wok-datagrid-body span > .fa {
+ font-size: 22px;
+ width: 20px;
+ height: 20px;
+ position: relative;
+}
+
+#network-root-container .wok-datagrid-body .up .fa {
+ color: #a8d46f;
+}
+
+#network-root-container .wok-datagrid-body .loading > .fa,
+#network-root-container .wok-datagrid-body .down .fa {
+ display: none;
+}
+
+#network-root-container .wok-datagrid > .wok-datagrid-header > span.column-state,
+#network-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-state {
+ width: 2.92207%;
+ text-align: center;
+}
+
+#network-root-container .wok-datagrid > .wok-datagrid-header > span.column-name,
+#network-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-name {
+ width: 19.2207%;
+}
+
+#network-root-container .wok-datagrid > .wok-datagrid-header > span.column-type,
+#network-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-type {
+ width: 11.3896%;
+}
+
+#network-root-container .wok-datagrid > .wok-datagrid-header > span.column-interface,
+#network-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-interface {
+ width: 10.3896%;
+}
+
+#network-root-container .wok-datagrid > .wok-datagrid-header > span.column-space,
+#network-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-space {
+ width: 30%;
+}
+
+#network-root-container .wok-datagrid > .wok-datagrid-header > span.column-action,
+#network-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-action {
+ width: 25.909%;
+ text-align: right;
+}
+
+#network-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-state {
+ height: 53px;
+ vertical-align: middle;
+}
+
+#storage-root-container .wok-datagrid-body span > .fa {
+ font-size: 22px;
+ width: 20px;
+ height: 20px;
+ position: relative;
+}
+
+#storage-root-container .wok-datagrid-body .handle {
+ user-select: none;
+ position: relative;
+}
+
+#storage-root-container .wok-datagrid-body .active .handle {
+ cursor: pointer;
+}
+
+#storage-root-container .wok-datagrid-body .active .fa-power-off {
+ color: #a8d46f;
+}
+
+#storage-root-container .wok-datagrid-body .inactive .handle {
+ cursor: default;
+}
+
+#storage-root-container .wok-datagrid-body .inactive .fa-power-off {
+ display: none;
+}
+
+#storage-root-container .wok-datagrid-body .inactive .usage-icon.icon-high {
+ background-image: url("/images/theme-default/high_disabled.png") !important;
+}
+
+#storage-root-container .wok-datagrid-body .inactive .usage-icon.icon-med {
+ background-image: url("/images/theme-default/med_disabled.png") !important;
+}
+
+#storage-root-container .wok-datagrid-body .inactive .usage-icon.icon-low {
+ background-image: url("/images/theme-default/low_disabled.png") !important;
+}
+
+#storage-root-container .volumes {
+ width: 100%;
+ background: #ddd;
+ display: none;
+}
+
+#storage-root-container .volumes > .footer {
+ z-index: 100;
+}
+
+#storage-root-container .volumes .volumeslist {
+ padding: 11px;
+ max-height: 285px;
+ min-height: 136px;
+ overflow: auto;
+}
+
+#storage-root-container .volumes .volume-box {
+ background: #fff;
+ padding: 4px 20px;
+ margin: 11px;
+ display: inline-block;
+ width: 409px;
+ height: 110px;
+}
+
+#storage-root-container .volumes .volume-title {
+ height: 46px;
+ width: 100%;
+ border-bottom: 1px solid #ccc;
+ position: relative;
+}
+
+#storage-root-container .volumes .volume-name {
+ font-size: 15pt;
+ font-weight: 300;
+ width: 274px;
+ line-height: 46px;
+ display: inline-block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+#storage-root-container .volumes .volume-utilization {
+ vertical-align: top;
+ text-align: right;
+ display: inline-block;
+ width: 90px;
+ height: 46px;
+ line-height: 46px;
+}
+
+#storage-root-container .volumes .volume-icon {
+ display: inline-block;
+ width: 27px;
+ height: 46px;
+ line-height: 46px;
+ background-repeat: no-repeat;
+ background-position: 50%;
+ background-color: transparent;
+}
+
+#storage-root-container .volumes .volume-usage {
+ vertical-align: top;
+ font-size: 15pt;
+ font-weight: 400;
+ display: inline-block;
+ text-align: right;
+ line-height: 46px;
+ padding-left: 0;
+ margin-left: 5px;
+}
+
+#storage-root-container .volumes .volume-icon.icon-high {
+ background-image: url("/images/theme-default/high.png");
+}
+
+#storage-root-container .volumes .volume-icon.icon-med {
+ background-image: url("/images/theme-default/med.png");
+}
+
+#storage-root-container .volumes .volume-icon.icon-low {
+ background-image: url("/images/theme-default/low.png");
+}
+
+#storage-root-container .volumes .volume-progress {
+ position: absolute;
+ margin: 0;
+ width: 409px;
+ top: -4px;
+ left: -20px;
+}
+
+#storage-root-container .volumes .volume-progress .progress-bar-outer {
+ background: transparent;
+ height: 6px;
+ overflow: hidden;
+ width: 100%;
+}
+
+#storage-root-container .volumes .volume-progress .progress-bar-inner {
+ background: #8BC53E;
+ height: 100%;
+ width: 100%;
+}
+
+#storage-root-container .volumes .volume-data {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+#storage-root-container .volumes .volume-data > li {
+ display: inline-block;
+ width: 89px;
+}
+
+#storage-root-container .volumes .volume-data > li span {
+ display: block;
+ font-size: 12pt;
+}
+
+#storage-root-container .volumes .volume-data > li span.value {
+ font-weight: 600;
+}
+
+#storage-root-container .volumes .volume-data > li span.key {
+ font-weight: 300;
+}
+
+#storage-root-container .volumes .pool-empty {
+ text-align: center;
+ line-height: 136px;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row[data-stat="inactive"] {
+ color: #999 !important;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-state,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-state {
+ width: 3.0519%;
+ text-align: center;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-name,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-name {
+ width: 12.7272%;
+ text-overflow: ellipsis;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-type,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-type {
+ width: 11.6883%;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-location,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-location {
+ width: 21.4285%;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-usage,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-usage {
+ width: 9.41558%;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-usage .usage-icon,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-usage .usage-icon {
+ padding-left: 35px;
+ display: inline-block;
+ background-repeat: no-repeat;
+ background-position: 0 50%;
+ background-color: transparent;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-usage .usage-icon.icon-high,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-usage .usage-icon.icon-high {
+ background-image: url("/images/theme-default/high.png");
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-usage .usage-icon.icon-med,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-usage .usage-icon.icon-med {
+ background-image: url("/images/theme-default/med.png");
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-usage .usage-icon.icon-low,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-usage .usage-icon.icon-low {
+ background-image: url("/images/theme-default/low.png");
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-capacity,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-capacity {
+ width: 8.701298%;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-allocated,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-allocated {
+ width: 9.35064%;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-disks,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-disks {
+ text-align: center;
+ width: 2.9870%;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-header > span.column-action,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-action {
+ width: 20.64%;
+ text-align: right;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-state {
+ height: 53px;
+ vertical-align: middle;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-disks {
+ height: 53px;
+ vertical-align: middle;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-disks .arrow-down,
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-disks .arrow-up {
+ display: inline-block;
+ font: normal normal normal 14px/1 FontAwesome;
+ font-size: inherit;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-disks .arrow-down:before {
+ content: "\f078";
+}
+
+#storage-root-container .wok-datagrid > .wok-datagrid-body > .wok-datagrid-row > span.column-disks .arrow-up:before {
+ content: "\f077";
+}
+
+#storage-root-container #logicalPoolExtend .modal-body {
+ max-height: 438px;
+}
+
+#storage-root-container #logicalPoolExtend .modal-body p span {
+ vertical-align: middle !important;
+}
+
+#storage-root-container #logicalPoolExtend form,
+.storage-modal form {
+ margin: 0 !important;
+}
+
+#storage-root-container #logicalPoolExtend .host-partition,
+.storage-modal .host-partition {
+ overflow-y: auto;
+ overflow-x: hidden;
+ max-height: 430px;
+}
+
+#storage-root-container #logicalPoolExtend .host-partition label,
+.storage-modal .host-partition label {
+ display: block;
+}
+
+#storage-root-container #logicalPoolExtend .host-partition label > div,
+.storage-modal .host-partition label > div {
+ vertical-align: top;
+ display: inline-block;
+}
+
+#storage-root-container #logicalPoolExtend .host-partition label span.device-name,
+#storage-root-container #logicalPoolExtend .host-partition label span.device-path,
+.storage-modal .host-partition label span.device-name,
+.storage-modal .host-partition label span.device-path {
+ display: block;
+}
+
+#storage-root-container #logicalPoolExtend .host-partition label span.device-name,
+.storage-modal .host-partition label span.device-name {
+ font-weight: 600;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+#storage-root-container #logicalPoolExtend .host-partition label span.device-path,
+.storage-modal .host-partition label span.device-path {
+ font-weight: 400;
+ word-wrap: break-word;
+}
+
+#storage-root-container #logicalPoolExtend .host-partition label > div {
+ width: 388px;
+}
+
+#storage-root-container #logicalPoolExtend .host-partition label > div span.device-path {
+ width: 388px;
+}
+
+.storage-modal .filter-select.popable .popover,
+.storage-modal .storage-target-input .popover,
+.storage-modal .storage-add-input .popover {
+ max-width: 100% !important;
+ width: 100%;
+ top: 34px;
+ left: -2px;
+ border: 0 !important;
+ background: 0 !important;
+ box-shadow: none !important;
+}
+
+.storage-modal .filter-select.popable .popover ul,
+.storage-modal .storage-target-input .popover ul,
+.storage-modal .storage-add-input .popover ul {
+ z-index: 1000;
+ padding: 5px 0;
+ margin: 2px 2px 0;
+ list-style: none;
+ font-size: 14px;
+ text-align: left;
+ background-color: #fcfcfc;
+ border: 1px solid #ccc;
+ border: 1px solid #ccc;
+ border-radius: 3px;
+ -webkit-box-shadow: compact(0 6px 12px rgba(0, 0, 0, 0.175));
+ -moz-box-shadow: compact(0 6px 12px rgba(0, 0, 0, 0.175));
+ box-shadow: compact(0 6px 12px rgba(0, 0, 0, 0.175));
+ background-clip: padding-box;
+}
+
+.storage-modal .filter-select.popable .popover ul li,
+.storage-modal .storage-target-input .popover ul li,
+.storage-modal .storage-add-input .popover ul li {
+ cursor: pointer;
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.42857;
+ color: #222;
+ white-space: nowrap;
+}
+
+.storage-modal .filter-select.popable .popover ul li:hover, .storage-modal .filter-select.popable .popover ul li:focus,
+.storage-modal .storage-target-input .popover ul li:hover,
+.storage-modal .storage-target-input .popover ul li:focus,
+.storage-modal .storage-add-input .popover ul li:hover,
+.storage-modal .storage-add-input .popover ul li:focus {
+ text-decoration: none;
+ color: #151515;
+ background-color: #f5f5f5;
+}
+
+.storage-modal #nfspathId[style],
+.storage-modal #nfsserverId[style] {
+ width: 100% !important;
+}
+
+.storage-modal .iscsi-section .form-group > .col-md-12 > .col-md-10 + .col-md-2 {
+ padding-left: 5px;
+}
+
+.storage-modal .iscsi-section .form-group > .col-md-12 > .col-md-10 {
+ padding-right: 5px;
+}
+
+.storage-modal .authenticationfield > div > .col-md-6 + .col-md-6 {
+ padding-left: 5px;
+}
+
+.storage-modal .authenticationfield > div > .col-md-6 {
+ padding-right: 5px;
+}
+
+.storage-modal .host-partition label > div {
+ width: 688px;
+}
+
+.storage-modal .host-partition label > div span.device-path {
+ width: 688px;
+}
--
2.5.0
9 years