Giter Site home page Giter Site logo

fishtankclient's Introduction

Hi there ๐Ÿ‘‹

  • โšก Excited to start a job at Public Storage as Director, Cloud Operations.
  • ๐Ÿ”ญ Iโ€™m currently working on my Kubernetes clusters using Helm
  • Gave a fun talk on PIKU at Scale21x this year.

fishtankclient's People

Contributors

jfmatth avatar kflavin avatar

Watchers

 avatar  avatar  avatar

fishtankclient's Issues

Check for settings.txt.

currently, if settings.txt doesn't exist, the settingsmanager just creates it and moves on, which shouldn't be the case. It should fail if the file doesn't exist.

Task - Restores

need a new task scheduled that looks for restore jobs.

Wrote up design doc in google and waiting for review

Use python requests

requests is a great library, that simplifies HTTP calls (gets and posts).

the code is littered with HTTP GET's and POST's, but the restore class uses requests. Convert our existing code to use requests.

tasks interval from settings

Currently, when the agent is setup either in agent.py or agentservice.py, the tasks for the agent are hard coded times.

These times should come from the settings manager, that way there are no hard coded times in the system.

Consolidate agent code

Currently, agent.py and agentservice.py serve the same purpose.

One is for running from command line (python agent.py) and the other for the agent package as a service (agentservice.exe install / start).

The code base is similar but should be consolidated.

The agentservice.py code already has provisions for running as "python.exe", so we should try to combine the functionality into one file (agentservice.py)

Verify settings

need a routine that brings down all the settings for a client, and checks to make sure each path is valid, and either errors or creates them for us.

Backup least copied torrent

when /getcloud is called, it returns a hash of which torrent needs a backup created, but it's sorted naturally, and always starts at the last record that meets criteria. Need to sort by client count, so those torrents with the fewest copies get spread out first.

Clean up local torrents when needed

currently, the local "cloud" directory is just added to.

A mechanism needs to be called that allows it to be cleaned up from time to time, typically when the system starts and maybe when a trigger is set off.

Several scenarios need to be accounted for:

  1. Torrent files exist on the client, that aren't on the tracker for this client.
  2. Torrent files exist without a fast-resume file attached.
  3. Tracker thinks that files should be on client, but are not, remove those from the tracker.

Improve the way settingsmanager GET's things from manager

right now settingsmanager uses /manager/settings//setting to retrieve info from the manager.

Since this is a HTTP GET, we should use parameters instead of the URL, so the new format would be

HTTP GET /manager/setting?guid=&key=

Sync local backup (fulldb.dbm) with cloud

When backups are removed from the cloud, those changes need to be reflected in the client that they originated from in it's fulldb.dbm file.

When a backup is 'deleted', it gets flagged, a client query is then run to ask which files are being removed from the cloud, those files are removed from the local DB and then tell the tracker to go ahead and remove the backups from the cloud.

this makes sure that stale files get filter out from time to time, but still provide a way to keep a client fully backed up.

working directory - not saved during service usage

when testing the agent piece (python agent.py), the environment knows it's local working directory (i.e. C:/fishtankclient/) but when run as a service (agentservice.py) it defaults to c:\windows\system32, and that won't work.

Need a way to save the installation directory.

buildclient.cmd - look in build directory for file

buildclient.cmd has evolved over the months, and now that we have the basics for EXE's and services built, when building a client via buildclient.cmd, it should look in the build\agent\ folder under fishtankclient to get its files.

Reload Tasks

Need a mechanism to reload the Task list (Tasker queue) upon command or in a timely manner.

Drives to backup

right now, there is a setting called backupdrives, which is LAME.

New code needs to figure out what local drives are available and back them up.

Link torrent to backup record

We need a way that when a torrent is uploaded to the system, it gets linked to it's associated backup record.

If when uploading a torrent, we can't find a torrent record, then we fail somehow. Uploading a torrent without the backup record is a no-no.

Change how settings[] are identified

right now, local .txt file settings are prefixed with . and server field settings are prefixed with _, this makes now sense at all.

Should prefix local settings with local. and server settings with server.

IP Address update

Need the client to update it's IP address to the manager.

This should be a first task on the tasker in the client, that way we don't need to update the info from register.py, and instead, just pass down it's GUID and other registration information.

Create two EXE's for client

using pyinstaller, we need two EXE's for the download client

register.exe (.py) allows us to register the client
agentservice.exe (.py) - whole agent service for backup.

Stop() callback for all functions

Need a way to tell a function to stop by adding a callback function to each sub-process of backup.

so, if the stop() function returns true, we can return quickly.

this revolves around the service aspect of the application

Installer for client

Use one of the many free utilities to make an .EXE installer for the client.

It must keep the same functionality as register.py does today, in fact, it should call register.py during install.

It will prompt for the registration key or allow it to be passed on the command line.

I downloaded Advanced Installer 8.2 to use, but haven't built anything yet.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.