Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 3.5.0 #165

Merged
merged 41 commits into from
May 11, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
22e6b8e
Fix lab.dep parser
Skazza94 Feb 3, 2022
75da76e
Add possibility to declare env variables from vstart and lab.conf
Skazza94 Mar 3, 2022
c148445
Add warning when using "ports" without "bridged" option.
Skazza94 Mar 3, 2022
9a954ab
Add localhost mapping in /etc/hosts
Skazza94 Mar 14, 2022
e85b9f2
Disable connect from Python API
Skazza94 Mar 17, 2022
7640d02
Search iptables binary using "which" (fix for WSL2)
Skazza94 Mar 17, 2022
3153728
Merge branch 'fix-lab-dep' into develop
Skazza94 Mar 18, 2022
25a29b6
Merge branch 'fix-connect-api' into develop
Skazza94 Mar 18, 2022
d858f8c
Decouple settings from filesystem
Skazza94 Mar 18, 2022
5e73653
Update Kubernetes Python version + Fix tests
Skazza94 Mar 18, 2022
d92fd88
Merge branch 'refactoring-settings' into develop
Skazza94 Mar 22, 2022
6563b9c
Fix `env` option description in vstart and lab-conf docs
tcaiazzi Mar 24, 2022
b538ea4
Add Event Dispatcher and Decouple UI Logic from business (#155)
Skazza94 Mar 24, 2022
2257ce1
Class name fix
Skazza94 Mar 24, 2022
3732c1c
Fix tests
Skazza94 Mar 24, 2022
d5839f6
Remove CLI_ENV completely (#155)
Skazza94 Mar 25, 2022
3e23818
Merge branch 'feature-events' into develop
Skazza94 Mar 25, 2022
10590b8
Add option in settings to select the image update policy (close #156)
tcaiazzi Mar 25, 2022
4b0189a
Merge branch '156-docker-image-update-policy' into develop
Skazza94 Mar 25, 2022
5fa8c82
Refactor get_machine_api_object and add get_machines_api_objects (#154)
Skazza94 Mar 25, 2022
f93f90a
Add get_link_api_object and get_links_api_objects (#154)
Skazza94 Mar 29, 2022
a15bd97
Wip on IMachineInfo and DockerMachineInfo (#154)
tcaiazzi Mar 29, 2022
8a125e0
Add MachineStats classes and refactor info commands (#154)
tcaiazzi Mar 31, 2022
461072e
Add DockerLinkStats + add get_link_statistics for Docker manager (#154)
tcaiazzi Apr 1, 2022
c36fb0a
Add support for both lab_hash and lab_name in undeploy_lab method (#154)
tcaiazzi Apr 1, 2022
79d2a72
Add support for both lab_hash and lab_name in connect_tty method (#154)
tcaiazzi Apr 1, 2022
2439d04
Merge remote-tracking branch 'origin/154-refactor-manager-interface' …
tcaiazzi Apr 1, 2022
77911d0
Add support for both lab_hash and lab_name in mangers exec (#154)
tcaiazzi Apr 1, 2022
102daa5
Polish + Add KubernetesLinkStats (#154)
Skazza94 Apr 4, 2022
def7d30
Fix Kubernetes stats and Manager (#154)
Skazza94 Apr 12, 2022
d24a469
Fix KubernetesLinkStats (#154)
Skazza94 May 9, 2022
ed7a0d7
Merge branch '154-refactor-manager-interface' into develop
Skazza94 May 9, 2022
dc049e1
Bump version for release
Skazza94 May 9, 2022
49eea31
Fix OSX compilation + Add Ubuntu 22.04 support
Skazza94 May 9, 2022
441f934
Fix changelog + Fix Nokogiri version on bionic
Skazza94 May 9, 2022
54bf52e
Fix Debian compilation
Skazza94 May 9, 2022
a245b0a
Change version + fix debian dependencies
tcaiazzi May 10, 2022
d86bc07
Fix pydoc
Skazza94 May 10, 2022
58c3814
Fix docker_image_test
tcaiazzi May 10, 2022
9e6ca67
fix docker arch version
tcaiazzi May 10, 2022
25ccdef
Add packages format to .gitignore
tcaiazzi May 11, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion docs/kathara.conf.5.ronn
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,13 @@ Each Manager specifies additional parameters which are used only when the Manage

Default to `true`.

* `image_update_policy` (string):
This parameter specifies the policy when a Docker image update is available for a running device.

Possible values are `Prompt`, `Always`, `Never`.

Default to `Prompt`.

* `shared_cd` (boolean):
This parameter allows to connect devices of different users to the same collision domains.

Expand Down Expand Up @@ -139,8 +146,9 @@ Each Manager specifies additional parameters which are used only when the Manage
"last_checked": 1600087624.6843708,
"hosthome_mount": false,
"shared_mount": true,
"image_update_policy": "Prompt",
"shared_cd": false,
"remote_url": "http://192.168.127.78:2375",
"remote_url": null,
"cert_path": null
}

Expand Down
15 changes: 10 additions & 5 deletions src/Kathara/cli/ui/event/UpdateDockerImage.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from ...ui.utils import confirmation_prompt
from ....manager.docker.DockerImage import DockerImage
from ....setting.Setting import Setting


class UpdateDockerImage(object):
Expand All @@ -16,8 +17,12 @@ def run(self, docker_image: DockerImage, image_name: str) -> None:
Returns:
None
"""
confirmation_prompt("A new version of image `%s` has been found on Docker Hub. "
"Do you want to pull it?" % image_name,
lambda: docker_image.pull(image_name),
lambda: None
)
policy = Setting.get_instance().image_update_policy
if policy == 'Prompt':
confirmation_prompt("A new version of image `%s` has been found on Docker Hub. "
"Do you want to pull it?" % image_name,
lambda: docker_image.pull(image_name),
lambda: None
)
elif policy == 'Always':
docker_image.pull(image_name)
43 changes: 40 additions & 3 deletions src/Kathara/cli/ui/setting/DockerOptionsHandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,39 @@ def add_items(self, current_menu: ConsoleMenu, menu_formatter: MenuFormatBuilder

shared_item = SubmenuItem(shared_string, shared_menu, current_menu)

# Image Update Policy Option
image_update_policy_string = "Docker Image Update Policy"
image_update_policy_menu = SelectionMenu(strings=[],
title=image_update_policy_string,
subtitle=setting_utils.current_string("image_update_policy"),
prologue_text="""Choose the policy when a Docker image update """
"""is available for a running device.

Default is %s.""" % DEFAULTS['image_update_policy'],
formatter=menu_formatter
)

image_update_policy_menu.append_item(FunctionItem(text="Prompt",
function=setting_utils.update_setting_value,
args=["image_update_policy", "Prompt"],
should_exit=True
)
)
image_update_policy_menu.append_item(FunctionItem(text="Always",
function=setting_utils.update_setting_value,
args=["image_update_policy", "Always"],
should_exit=True
)
)
image_update_policy_menu.append_item(FunctionItem(text="Never",
function=setting_utils.update_setting_value,
args=["image_update_policy", "Never"],
should_exit=True
)
)

image_update_policy_item = SubmenuItem(image_update_policy_string, image_update_policy_menu, current_menu)

# Shared Links Option
shared_cd_string = "Enable Shared Collision Domains between users"
shared_cd_menu = SelectionMenu(strings=[],
Expand Down Expand Up @@ -102,7 +135,8 @@ def remote_url_unix():
title=remote_url_string,
subtitle=setting_utils.current_string("remote_url"),
prologue_text="""You can specify a remote Docker Daemon URL.
Default is %s.""" % DEFAULTS['remote_url'],

Default is %s.""" % DEFAULTS['remote_url'],
formatter=menu_formatter
)

Expand All @@ -126,8 +160,10 @@ def remote_url_unix():
cert_path_menu = SelectionMenu(strings=[],
title=cert_path_string,
subtitle=setting_utils.current_string("cert_path"),
prologue_text="""When using a remote Docker Daemon, a TLS Cert could be required.
Default is %s.""" % DEFAULTS['cert_path'],
prologue_text="""When using a remote Docker Daemon, a TLS Cert could be """
"""required.

Default is %s.""" % DEFAULTS['cert_path'],
formatter=menu_formatter
)

Expand Down Expand Up @@ -164,6 +200,7 @@ def remote_url_unix():

current_menu.append_item(hosthome_item)
current_menu.append_item(shared_item)
current_menu.append_item(image_update_policy_item)
current_menu.append_item(shared_cd_item)
if remote_url_item:
current_menu.append_item(remote_url_item)
5 changes: 4 additions & 1 deletion src/Kathara/setting/addon/DockerSettingsAddon.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,20 @@
DEFAULTS = {
"hosthome_mount": False,
"shared_mount": True,
"image_update_policy": "Prompt",
"shared_cd": False,
"remote_url": None,
"cert_path": None
}


class DockerSettingsAddon(SettingsAddon):
__slots__ = ['hosthome_mount', 'shared_mount', 'shared_cd', 'remote_url', 'cert_path']
__slots__ = ['hosthome_mount', 'shared_mount', 'image_update_policy', 'shared_cd', 'remote_url', 'cert_path']

def __init__(self) -> None:
self.hosthome_mount: bool = False
self.shared_mount: bool = True
self.image_update_policy: str = 'Prompt'
self.shared_cd: bool = False
self.remote_url: Optional[str] = None
self.cert_path: Optional[str] = None
Expand All @@ -25,6 +27,7 @@ def _to_dict(self) -> Dict[str, Any]:
return {
'hosthome_mount': self.hosthome_mount,
'shared_mount': self.shared_mount,
'image_update_policy': self.image_update_policy,
'shared_cd': self.shared_cd,
'remote_url': self.remote_url,
'cert_path': self.cert_path
Expand Down