Skip to content
This repository has been archived by the owner on Oct 27, 2022. It is now read-only.

Commit

Permalink
Propagate exceptions when calling the daemon, use it to show errors t…
Browse files Browse the repository at this point in the history
…o users

Also reshape status handling: each exception type has a different status.
  • Loading branch information
guillaumerose authored and anjannath committed Mar 10, 2021
1 parent 5d918c3 commit a887ac0
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 264 deletions.
37 changes: 4 additions & 33 deletions CodeReady Containers/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -153,41 +153,10 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
NSApplication.shared.terminate(self)
}

func updateStatusMenuItem(status: String) {
if status == "Stopped" {
self.statusMenuItem.title = "Cluster is Stopped"
self.statusMenuItem.image = NSImage(named:NSImage.statusUnavailableName)
}
if status == "Running" {
self.statusMenuItem.title = "Cluster is Running"
self.statusMenuItem.image = NSImage(named:NSImage.statusAvailableName)
}
}

func showClusterStartingMessageOnStatusMenuItem() {
self.statusMenuItem.title = "Cluster is starting..."
self.statusMenuItem.image = nil
}

func showClusterStatusUnknownOnStatusMenuItem() {
self.statusMenuItem.title = "Status Unknown"
self.statusMenuItem.image = NSImage(named: NSImage.statusNoneName)
}
func updateMenuStates(state: MenuStates) {
self.startMenuItem.isEnabled = state.startMenuEnabled
self.stopMenuItem.isEnabled = state.stopMenuEnabled
self.deleteMenuItem.isEnabled = state.deleteMenuEnabled
self.webConsoleMenuItem.isEnabled = state.webconsoleMenuEnabled
self.ocLoginForDeveloper.isEnabled = state.ocLoginForDeveloperEnabled
self.ocLoginForKubeadmin.isEnabled = state.ocLoginForAdminEnabled
self.copyOcLoginCommand.isEnabled = state.copyOcLoginCommand
}

func initializeMenus(status: String) {
self.statusMenuItem.title = "Status Unknown"
self.statusMenuItem.image = NSImage(named:NSImage.statusNoneName)
updateStatusMenuItem(status: status)
self.statusMenuItem.title = status
if status == "Running" {
self.statusMenuItem.image = NSImage(named:NSImage.statusAvailableName)
self.startMenuItem.isEnabled = false
self.stopMenuItem.isEnabled = true
self.deleteMenuItem.isEnabled = true
Expand All @@ -197,6 +166,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
self.ocLoginForKubeadmin.isEnabled = true
self.statusItem.button?.appearsDisabled = false
} else if status == "Stopped" {
self.statusMenuItem.image = NSImage(named:NSImage.statusUnavailableName)
self.startMenuItem.isEnabled = true
self.stopMenuItem.isEnabled = false
self.deleteMenuItem.isEnabled = true
Expand All @@ -206,6 +176,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
self.ocLoginForKubeadmin.isEnabled = false
self.statusItem.button?.appearsDisabled = true
} else {
self.statusMenuItem.image = NSImage(named:NSImage.statusNoneName)
self.startMenuItem.isEnabled = true
self.stopMenuItem.isEnabled = false
self.deleteMenuItem.isEnabled = false
Expand Down
15 changes: 5 additions & 10 deletions CodeReady Containers/DaemonCommander/DaemonCommander.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,11 @@ class DaemonCommander {
let userHomePath: URL = FileManager.default.homeDirectoryForCurrentUser
let socketPath: URL = userHomePath.appendingPathComponent(".crc").appendingPathComponent("crc.sock")

func SendCommandToDaemon(command: Request) -> Data? {
do {
let req = try JSONEncoder().encode(command)
print(String(data: req, encoding: .utf8)!)
let daemonConnection = DaemonCommander(sockPath: socketPath.path)
return try daemonConnection.sendCommand(command: req)
} catch let error {
print(error.localizedDescription)
}
return "Failed".data(using: .utf8)
func SendCommandToDaemon(command: Request) throws -> Data {
let req = try JSONEncoder().encode(command)
print(String(data: req, encoding: .utf8)!)
let daemonConnection = DaemonCommander(sockPath: socketPath.path)
return try daemonConnection.sendCommand(command: req)
}

struct ConfigsetRequest: Encodable {
Expand Down
Loading

0 comments on commit a887ac0

Please sign in to comment.