Giter Club home page Giter Club logo

limux-gosa's People

Contributors

jmglogow avatar mbanck avatar mbenkmann avatar mxey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

limux-gosa's Issues

use case: user shuts down computer when softupdate/install launches

From [email protected] on November 23, 2012 15:24:06

A typical use case is the following:

  1. softupdate/install triggers
  2. user is notified that he should log out
  3. user selects "shutdown" instead of "logout"

Make sure that in this use case the softupdate/install properly activates. Maybe send regular wake up messages for some time if the softupdate/install doesn't start after the alotted time.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=29

Do not restore foreign jobs from jobdb.xml

From [email protected] on September 17, 2012 22:51:12

When go-susi is launched, it loads jobdb.xml to initialize the jobdb (jobdb.go:JobsInit()). This should filter out any jobs from other servers, because those jobs may be already finished. When the newly launched go-susi sends its new_server message to other servers, they will (if they are go-susi and not gosa-si) answer with a copy of their jobdb, so the new go-susi will learn the other server's jobs in this manner.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=9

go-susi --sniff

From [email protected] on September 10, 2012 20:27:42

go-susi --sniff contacts the go-susi instance running on the machine and causes it to send debug level log messages back over the connection. This way go-susi can be running with loglevel 0 but for troubleshooting you can attach to the running instance rather than restarting it with -v (which may cause the problem to disappear)

The command must be encrypted with the ServerPackages key because whoever has that key can decrypt all messages anyway.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=5

Make job handling cope better with clock adjustments

From [email protected] on October 17, 2012 22:13:35

Currently if more than 2s are subtracted from the system clock after a call to JobUpdate(), that job will not be processed until some other call to JobUpdate() occurs after the clock adjustment and schedules a JobHandling() at a later time. This should be made more robust. One idea would be a function

util.SleepUntil(t time.Time)

which unlike time.Sleep() rechecks the actual time when it wakes up and goes to sleep again if the time is not yet reached.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=20

Missing tests

From [email protected] on February 15, 2013 18:11:45

db.ClientWithAddress()

db.ClientUpdate() with case where 2 old entries are replaced (i.e. the new entry has the same as entry 1 and the same as entry 2)

db.SystemGetState(mac,"objectclass") for an object with multiple objectclasses to check that as documented only the 1st object class is returned. I think this is not true ATM. Either change docs or change code to make consistent.

db.SystemDataForMAC()

db.SystemSetState() test case to verify that the new attribute can replace multiple existing attribute values (e.g. gotoNtpServer). To create this test case it will probably be necessary to add a new function db.SystemSetStateMulti() that takes an array of values, so that it can be used to set multiple values before the test.

db.SystemSetState() test case where the attribute to set does not yet exist. This will probably need the db.SystemSetStateMulti() function described in the previous paragraph so that the test can delete the attribute before the test.

Test case for here_i_am with a client that is not in LDAP. Test that go-susi sends registered followed by detect_hardware

Test case for here_i_am with a client that is in LDAP. Test that go-susi sends registered followed by new_ldap_config and new_ntp_config. This should happen even if the client object has neither attribute. The missing LDAP data should be replaced with go-susi's own data and the default NTP server should be pool.ntp.org.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=46

Clean up broken local jobs

From [email protected] on December 10, 2012 21:53:47

There are several ways for jobdb to get broken local jobs, e.g.

  1. go-susi is stopped after a job has gone to status "processing" but before it has actually been executed. On restart the job will be restored in status processing but never go to "done".
  2. go-susi is stopped (or network is interrupted) while an installation is in progress. The installation completes without telling go-susi.
  3. A client crashes during installation because of a hardware defect. The machine is taken out of commission, so that the install job will never resume.

At some point local jobs with a time in the past should be cleaned up.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=34

Recheck for plainname if only MAC known

From [email protected] on September 22, 2012 23:29:37

gosa-si has the problem that if it can't determine the plainname when the job is added, it won't ever be filled in and only the MAC address will show in GOsa. This typically happens when a new machine is activated whose install job triggers before it has created its LDAP object.

go-susi should retry to determine the plainname on certain occasions if only the MAC is known, for instance on CLMSG_* messages generated during the installation.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=15

Update client version in faiclass attribute when client registers

From [email protected] on January 29, 2013 10:05:36

This ticket is from the klax wishlist for BC 5.0

When a client registers itself at go-susi (I think that's the here_i_am message), it should send its actual version (/etc/debian_version or from /etc/sysconfig/GOto, however the latter does not seem to exist on servers) and go-susi should change the faiclass attribute in LDAP if necessary to match that version.

This requires patching gosa-si-client to add the data to its registration message but that should be easy.

ATTENTION! Make sure that this does not happen during reinstallation or softupdate. Checking faistate and only making the change if it is localboot should be enough.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=37

Test client connection resume after restart

From [email protected] on February 11, 2013 10:32:11

Test case:

  1. register several clients at vts-susi
  2. stop vts-susi
  3. stop client X and restart it so that registers with a different server
  4. start vts-susi
  5. Check that vts-susi re-establishes the client connections and sends new_foreign_client messages for all clients that re-register at vts-susi (probably none, because of Issue #39 )
  6. Check that after the dust settles all clients (in particular client X) are in clientdb with the proper server(s).

Original issue: http://code.google.com/p/go-susi/issues/detail?id=40

Generate install job from FAIstate

From [email protected] on September 20, 2012 16:43:53

On startup as well as gosa_query_jobdb, LDAP entries for computers should be scanned and for FAIstates other than localboot (including error states) install jobs should be generated if they do not exist in the jobdb. The goal is to make sure that gosa_query_jobdb will always include all machines that are not in localboot state. These generated jobs should have siserver=unknown so that they will not actually cause launching a new install job. However when such a job is deleted, it must cause the FAIstate to be set to localboot and the cancelling of the job must be communicated to other servers.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=11

auto-learn networks for wake-on-lan

From [email protected] on November 23, 2012 17:58:04

In order to wake up a machine, go-susi needs to know that machine's network's broadcast address. If the machine's fully qualified name is known, it can be resolved to an IP from which the network is easy to derive. If only the plain name of the machine is known this fails if the machine is on a different subdomain than the server. One way to overcome this is to use the [ServerPackages]/domains config option. However this is not easy to configure automatically.

go-susi should be able to learn about possible networks automatically through the following means:

client addresses from messages like new_server, new_foreign_client as well as communications received from clients are used to get

  1. the possible numeric networks
  2. by reverse lookup the names of domains

When a machine needs to be woken up, go-susi tries the following

  1. try to resolve the cn of the machine (note that this is NOT what db.PlainnameForMAC() returns)
  2. try to resolve the plain name (i.e. without a domain if the cn has a domain)
  3. try a reverse lookup of ipHostNumber and match that against the plain name. If the reverse lookup yields plain name "." something, then use the ipHostNumber
  4. for each of the known domain names, try to look up plain name "." domain.
  5. If none of the above yielded an IP address, spam all known numeric networks' broadcast addresses with the WOL packet.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=30

use a single goroutine for jobdb.go:scheduleProcessPendingActions()

From [email protected] on November 27, 2012 10:25:43

Currently a new goroutine is started for each scheduleProcessPendingActions(). This causes many goroutines to be created and if test jobs in the distant future are created and then cancelled these goroutines stick around. This is not a real problem since Go should be able to have 10000s of goroutines running and all of these goroutines are simply blocking in util.WaitUntil(), so they're not wasting CPU.

However it would be nicer to have only a single goroutine for this. My current idea is the following:

  • create a Deque that stores timestamps in sorted order
  • scheduleProcessPendingActions adds each new timestamp to the deque via deque.InsertSorted() (to be added to deque). InsertSorted() returns the index where the item was inserted.
  • the scheduler goroutine has a timer channel and a signal channel. It waits until either channel receives something. The timer channel is set to the timestamp At(0). If a signal is received on the signal channel (every time scheduleProcessPendingActions() runs it sends on this channel), the scheduler removes the next elements from the queue until At(0) is a time in the future. Then it programs the timer for that timestamp, signals processPendingActions and goes blocking again on the 2 channels.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=32

LDAP prefetching while user activity in GOsa

From [email protected] on August 30, 2012 18:11:28

Fetching LDAP data can take a few seconds. To speed things up for the user, go-susi should prefetch the LDAP data potentially used by GOsa and serve the prefetched data rather than querying LDAP when a GOsa request comes in.

There are 2 competing requirements here:

  1. We want to prefetch often, so that the data is as fresh as possible
  2. We don't want to put a constant load on the LDAP server

As a compromise, every GOsa request that comes in should start or restart a timer of e.g. 2 minutes. During these 2 minutes go-susi will continuously query the LDAP server for all relevant data as often as is possible for that kind of data (i.e. after every query has completed, the same query is issued again with only a few seconds delay). Once the 2 minutes have elapsed, the fetching stops.

Experiments or logfile statistics should be used to find the shortest period of time that will give the necessary benefits to the user. 2 minutes is probably too long.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=3

add "panic" command

From [email protected] on November 25, 2012 16:33:38

Add support for a message

panic that causes a panic().
Possibly distinguish between

panic

and

panic

or something like that. The former case would do panic("foo") and the latter would do panic(nil) (which won't be caught by util.WithPanicHandler)

The application for this function is to get a backtrace of all goroutines in the log file which is useful to debug deadlocks and similar issues.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=31

Change xml.Hash to use struct fields for /last-sibling and /next

From [email protected] on August 30, 2012 17:55:41

For historical reasons (xml.Hash started out as an alias for map[string]string) xml.Hash uses map entries for /next and /last-sibling. It would make the code a bit nicer to use fields instead.

As a first step I would replace

.refs["/last-sibling"]

with

.lastSibling

(and likewise for /next)

Then grep through the source for any remaining "/" (there shouldn't be many). Some tests can be eliminated after this change in iterations of the kind "for ... := range ...refs".

Original issue: http://code.google.com/p/go-susi/issues/detail?id=2

Check if <from> and <to> are used incorrectly by GOsa

From [email protected] on September 04, 2012 12:46:03

As described in the manual, and do not have the meaning their names suggest. It is possible that GOsa uses and as a range of values to be reported rather than as OFFSET and LIMIT.

Check if GOsa uses anywhere (other than passing 0 and 9999999) and if it uses it according to the actual meaning or the one implied by the names and . If GOsa uses it in the intuitive meaning, change go-susi to implement and as actual range boundaries.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=4

Do not send foreign jobs in reaction to new_server

From [email protected] on October 17, 2012 11:40:22

Right now go-susi transmits its whole jobdb to a peer that sends it new_server. It may be a better idea to only transmit jobs for which the sending server is directly responsible.

Advantages:
The authoritative source for any job is the server that is responsible. The new_server will only get one foreign_job_updates for each job, rather than (possibly conflicting) updates from all servers to which it sends new_server.

After deleting a server's jobdb it will not be regenerated from other servers, which can be really annoying when you try to get rid of erroneous jobs.

Disadvantages:
If not all servers are listed in DNS/address, then a new server will start with an incomplete jobdb.

A server that loses/corrupts its jobdb can not regenerate its own jobs from foreign information.

It becomes easy for jobdbs to get out of sync if a server's jobdb is deleted.

Alternatives:
A middle ground solution between the current behaviour and the one described above would be to filter out from foreign_job_updates only those jobs that are the responsibility of new server. This allows for deleting a server's jobdb to get rid of its jobs but other server's jobs will still get regenerated even if they are not all listed in DNS. The disadvantage of jobdbs getting out of sync remains of course (because it is the flip side of the advantage we're trying to achieve).

Original issue: http://code.google.com/p/go-susi/issues/detail?id=18

GOsa patch: edit jobs, change <periodic>

From [email protected] on December 21, 2012 15:15:22

Derzeit kann man bei einem periodic job das periodic nicht abschalten
über Verteilungsstatus/Bearbeiten, weil GOsa wenn man die periodic
Checkbox abschaltet, das Element gar nicht aufführt im
Element. Dadurch ändert es sich nicht. Korrekt wäre wenn GOsa
in dem Fall none einfügen würde. Der angehängte
Patch scheint dies zu erreichen.

Attachment: periodic-edit-fix.patch

Original issue: http://code.google.com/p/go-susi/issues/detail?id=36

gosa-si-client patch: When re-registering due to decode error, start at beginning of list again.

From [email protected] on February 08, 2013 15:05:32

Create a gosa-si-client fix for the behaviour described at the here_i_am message in the operator's manual. When gosa-si-client re-registers due to not being able to decode a message (e.g. a ping encoded with dummy-key or "Müll" as sent by go-susi) it should start again with the server listed in client.conf instead of going to the next server from DNS.

Original issue: http://code.google.com/p/go-susi/issues/detail?id=39

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.