{% extends "master.html" %} {% block title %} About EveryCRSReport.com {% endblock %} {% block head %} {% endblock %} {% block body %}
EveryCRSReport.com is a project of Demand Progress in collaboration with the Congressional Data Coalition — a bipartisan coalition founded by Demand Progress and the R Street Institute to promote open legislative information.
You can reach us at<EMAIL_ADDRESS>We are glad to hear from you, but please do not ask us to help you perform research or find reports. More contact information for us is at the Demand Progress policy page.
Please go to our donation website and donate there to help us keep this website running. If you are interested in giving more than a modest amount (any amount is welcome!), or want to support other open government work, please contact me, Daniel Schuman, at<EMAIL_ADDRESS>All of the CRS reports (and metadata) on this site is available for download. See the developer documentation for details.
Congressional Research Service reports are the best way for anyone to quickly get up to speed on major political issues without having to worry about spin — from the same source Congress uses.
CRS is Congress’ think tank, and its reports are relied upon by academics, businesses, judges, policy advocates, students, librarians, journalists, and policymakers for accurate and timely analysis of important policy issues. The reports are not classified and do not contain individualized advice to any specific member of Congress. (More: What is a CRS report?)
Until today, CRS reports were generally available only to the well-connected.
Now, in partnership with a Republican and a Democratic member of Congress and library partners, we are making these reports available to everyone for free online and in one place.
A coalition of public interest groups, journalists, academics, students, some Members of Congress, and former CRS employees have been advocating for greater access to CRS reports for over twenty years. Two bills in Congress to make these reports widely available already have 10 sponsors (S. 2639 and H.R. 4702, 114th Congress) and we urge Congress to finish the job.
This website shows Congress one vision of how it could be done. Here's why we did it.
EveryCRSReport.com includes {{reports_count|intcomma}} CRS reports. The number changes regularly.
It’s every CRS report that’s available on Congress’s internal website CRS.gov, plus about 5,100 archived reports from the University of North Texas Libraries Government Documents Department CRS reports collection.
We redact the phone number and email address of virtually all the analysts from the reports obtained from CRS.gov. We also add disclaimer language regarding copyright and the role CRS reports are intended to play. That’s it. (Here's why we redact some info.)
If you’re looking for older reports that we don’t have here yet, our good friends at CRSReports.com may have them.
We also show how much a report has changed over time (whenever CRS publishes an update), provide RSS feeds, and we hope to add more features in the future. Help us make that possible.
To receive an email alert for all new reports and new reports in a particular topic area, use the RSS icon next to the topic area titles and a third-party service, like IFTTT, to monitor the RSS feed for new additions.
We owe a huge debt to Josh Ruihley, who built the amazing (but no longer operating) opencrs.com, which hand curated the reports from the web. We are fortunate to be able to take a different approach to gathering the reports and salute him for his years of effort.
We also must thank Antoine McGrath, who not only built the fantastic CRSReports.com, but also helped write the code to clean up CRS’ files.
We also must acknowledge Steve Aftergood of the Federation of American Scientists, who tirelessly collected many CRS reports on his website, as have many others, who curate and publish the reports online.
Joshua Tauberer did the software development for this website.
We dedicate the website to the memory of Aaron Swartz and to activists everywhere that labor to make civic information available to the general public.


We Provide The Best Food
At The Right Price
2 Burgers with Cheese + 2 Plain Chips + 2 Soda (State your preferred meat for both burgers and choose two sodas in special instructions when ordering).
Unfiltered Blend of Nutrient Packed Fruits & Veggies, Preferably taken on an empty stomach.
Great food! Menu is awesome, their foods are nt only great but also in the right price. I'll highly recommend them :)
We are menu a little team of 7 members. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce viverra mauris in rhoncus pellentesque. Integer at enim mattis, tempor velit sit amet, ultrices dui. Nunc ultrices eu velit id rutrum.


|
lwIP
2.1.3
Lightweight IP stack
|
Functions | |
| err_t | lowpan6_set_context (u8_t idx, const ip6_addr_t *context) |
| err_t | lowpan6_set_short_addr (u8_t addr_high, u8_t addr_low) |
| err_t | lowpan6_output (struct netif *netif, struct pbuf *q, const ip6_addr_t *ip6addr) |
| err_t | lowpan6_input (struct pbuf *p, struct netif *netif) |
| err_t | lowpan6_set_pan_id (u16_t pan_id) |
| err_t | tcpip_6lowpan_input (struct pbuf *p, struct netif *inp) |
6LowPAN netif implementation
NETIF input function: don't free the input pbuf when returning != ERR_OK!
| err_t lowpan6_output | ( | struct netif * | netif, |
| struct pbuf * | q, | ||
| const ip6_addr_t * | ip6addr | ||
| ) |
Resolve and fill-in IEEE 802.15.4 address header for outgoing IPv6 packet.
Perform Header Compression and fragment if necessary.
| netif | The lwIP network interface which the IP packet will be sent on. |
| q | The pbuf(s) containing the IP packet to be sent. |
| ip6addr | The IP address of the packet destination. |
| err_t lowpan6_set_context | ( | u8_t | idx, |
| const ip6_addr_t * | context | ||
| ) |
Set context
| err_t lowpan6_set_pan_id | ( | u16_t | pan_id | ) |
Set PAN ID
| err_t lowpan6_set_short_addr | ( | u8_t | addr_high, |
| u8_t | addr_low | ||
| ) |
Set short address


How do I quit the study?
Your participation is voluntary. To quit the study, please select "Leave study" from the profile tab.
The data already collected will continue to be used in the study. It will not be destroyed or deleted.
Your participation is voluntary. To quit the study, please select "Leave study" from the profile tab.
The data already collected will continue to be used in the study. It will not be destroyed or deleted.


Import a subset of imagery¶
You can import a single area of a source image to Fusion as a new, smaller image file. For example, shown below is a compressed, high-resolution MrSID source image of Santa Clara County, California. On a standard server machine, it would take several hours to import this entire image to Fusion.
If you do not need the entire image, you can select an area of the
image to import, then use getranslate -projwin
to extract the
area and create a new image from it. The -projwin
parameter
reads the coordinates of the bounding box you specify and writes
out your selection as a new image. The coordinates are based on
the native projection in the source image. You can use Google
Earth to easily find corner coordinates for the area you want to
copy. (To learn how, see Find & use location
coordinates in
the Google Earth Help.) The getranslate
tool, extended from
the GDAL gdal_translate
tool, includes support for JPEG2000
format source imagery.
Example of importing a subset of imagery
The source file shown below is in a UTM projection (UTM Zone 10N,
NAD83 Datum) and references coordinates in meters. You can use
Google Earth to locate coordinates for the upper-left (580907.14 E
& 4142271.64 N) and lower-right (581788.04 E & 4141453.58 N)
corners of the area you want to import. Then you can specify the
coordinate values, the output format (for example, a file type
like GeoTIFF, MrSID, or JPEG2000), and the projection (using the
-a_srs
option) for the new image. The command looks something
like this:
/opt/google/bin/getranslate -of HFA -projwin 580907.14 4142271.64 581788.04 4141453.58 /path/to/input.sid /path/to/output.img
The resulting output.img file contains imagery for the area you
specified with -projwin
:
You can compare the size of the original image with the extracted area, as shown below:
getranslate command options
usage: getranslate [options] <input> <output>
Supported options are:
--help|-? : Show this usage message
--formats : Show supported formats and exit
-ot <Byte|Int16|UInt16|UInt32|Int32|Float32|Float64|CInt16|CInt32|CFloat32|CFloat64>
: Pixel type of output (default: match input)
-not_strict
-of <format>
: File format of output (default: GTiff) -b <band>
: Specifies band to copy (1 based indexing). Can be:
specified multiple times. (e.g. "-b 3 -b 2 -b 1")
will reverse the bands.
-outsize <xsize[%]> <ysize[%]>
: Size of the output image (pixels or % of original).
-scale [<src_min> <src_max> [<dst_min> <dst_max>]]
: Scale the input pixels values -srcwin <xoff> <yoff> <xsize> <ysize>
: Select sub window from input
-a_srs <projection>
: Assign specified projection to the output
<projection> can be:
NAD27|NAD83|WGS84|WGS72
EPSG:<num>
<PROJ.4 definition>
<OpenGIS Well Known Text>
<filename of file with OpenGIS Well Known Text>
ESRI::<ESRI Well Known Text File(.prj)>
-projwin <ulx> <uly> <lrx> <lry>
: Select sub window from input. Like -srcwin but uses
georeferenced coordinates -co "NAME=VALUE"*
: Pass construction arguments to output GDAL dataset
-mo "META-TAG=VALUE"*
: Meta information to be included in the output
-quiet
Utilizes GDAL 2.1.2, released October 2016


WAG THE DOG
By Harvey Karten, Ph.D. New Line Cinema Director: Barry Levinson Writer: Hilary Henkin and David Mamet Cast: Robert DeNiro, Dustin Hoffman, Anne Heche, Denis Leary, Willie Nelson, Andrea Martin, Kirsten Dunst, William H. Macy, Craig T. Nelson, Suzie Plakson
The U.S. Constitution is a flawed document. Made up by fellows of landed wealth, it nevertheless forbids the country from enjoying a monarchy.  The monarch provides the people with the drama we all seek while allowing those with true power to carry on the routines of governing. In the U.S., by contrast, the people depend on their politicians for their theatrical thrills, an addiction which leads to months of long, silly campaigning for high offices like the presidency. The scandal-hungry public, unable to grant titular leaders the permission to humiliate themselves, instead depend on presidential mortification.
In "Wag the Dog," Barry Levinson does an unusually quiet, though articulate, take on what a president must do during the closing days of his campaign to get re-elected when a scandal threatens to oust him from office. Hilary Henkin and David Mamet, who wrote the script, do not tell us anything we don't know about the corrupt bargains needed by higher-ups (in business as well as politics). But allowing clever dialogue to come across to the audience as routine, matter-of-fact conversation, they have allowed their actors to expose political shams as nothing more than acts and deeds that go with the territory. Though "Wag the Dog" lacks the crisp, repetitive talk that we usually expect from writers like Mamet, the movie compensates by uncovering the corruption that power engenders as though it were merely a feature of performance artistry. In other words, the value of the film is that it presents sensational events as though they were expected, everyday occurrences.
The drama is inspired by an incident which befalls the incumbent president during the conclusion of his re-election campaign. A teenage girl accuses the chief executive of sexual harassment which allegedly took place just beyond the prying eyes of the Oval Office, leading comedian Jay Leno to quip, "When the president presses the flesh, he's not campaigning: he's dating." The senator who is running for the high office exploits the situation by using the song "Thank heaven for little girls" to put across his point that "we have to change the tune." The incident threatens the tenure of the chief executive. What to do? The campaign hires a spin doctor, Conrad Brean (Robert De Niro), also known as "Mr. Fixit," to devise a way to whitewash the event. What better way to distract the electorate than by going to war? No need to have any actual fighting: just produce a skirmish in much the way that Hollywood would create a movie and convince the public that a heroic conflict is actually occurring. Brean hires a Hollywood producer, Stanley Motss (Dustin Hoffman) who--with the help of a song writer (Willie Nelson), a would-be hero (Woody Harrelson) and an attractive presidential assistant (Anne Heche)--invent a conflict involving a U.S. anti-terrorist fighting mission in Albania.
As a delightful contrivance, "Wag the Dog" recalls the waggery of Leonard Wibberley's novel, "The Mouse That Roared," which deals with a small country that declares war against the U.S. fully expecting to lose and then be granted huge doses of foreign aid by the victor. In this case, the world's greatest power allegedly sends B-3 bombers (which the U.S. government denies even exists therefore leading the public to conclude that it surely does) to little Albania. To excite the American people to the horrors committed in that poor European nation, Motss hires a young woman (Kirsten Dunst) to act out a skit in which she is running across her Albanian village screaming that she has just been raped by terrorists. To keep the C.I.A. from revealing the hoax, Motss and Brean explain to one of its members (William H. Macy) that his very job depends on playing along with the game.
Visually, "Wag the Dog" unfolds one event which provides its audience with a display of technical virtuosity that will amaze even the most jaded, teenage computer hacker. Asking the "terrorist victim" simply to run across the stage with a large bag of potato chips in her hands, Motss and Brean show how digitized photography can create astounding imagery. As the technician (Bernard Hocke) manipulates a large machine, the bag of potato chips turns into a white kitten which has been superimposed on the TV screen, and the stage becomes a quaint European village in flames.
The real virtue of the movie is the chemistry between De Niro as spin doctor and Hoffman as Hollywood producer. While De Niro's character remains in the background, Hoffman's is exuberant. Baring vanity as mankind's favorite sin--as Al Pacino informed us in his diabolical role in "Devil's Advocate"--Hoffman stands out as a guy who does not want for financial success but feels left out because "no one knows what a producer does." Having produced several Academy Awards shows, he groans that he has never himself won an Oscar, and is determined to put on a show during the presidential campaign which is the creative high point of his life. Anne Heche, by contrast, is ill-defined by the script and so heavily made up that she looks like a figure from the collection of Madame Tussaud.
Deliberately scaled down to ponder the everyday nature of corruption, "Wag the Dog" comes across as a modest, $15 million film shot in just under a month, an intriguing entry from Barry Levinson which embraces his smaller movies like "Diner" rather than more flamboyant ones like "Bugsy" and "Donnie Brasco" Rated R. Running Time: 98 minutes. (C) 1997 Harvey Karten
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


In 2015, an estimated 150 million people worldwide were homeless. Our mission is to provide a reliable network of communication with a single point destination. Connecting social workers, humanitarian aid providers and the communities they serve with the families of those who may be searching for each other, regardless of organization, affiliation or geographic location.
Our volunteers are actively involved with organizations that provide community outreach, humanitarian relief and access to critical care services to homeless communities in their local regions.
From Social Workers, Church volunteers, soup-kitchen workers and all points in between. Volunteers are the central contact point bridging the gap, posting new alerts and receiving messages when a response is submitted.
Anyone can view active postings. No account is required to view or post, however, if you are looking for a family member we will need some way to get in contact with you in the event one of our volunteers is able to make a connection.
If you are searching for a loved one who may be struggling with maintaining a stable line of contact due to homelessness or related hardships, maybe we can help.


public final class EXTDeviceFission
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
static int |
CL_AFFINITY_DOMAIN_L1_CACHE_EXT
Accepted as a property name, when accompanying the
CL_DEVICE_PARITION_BY_AFFINITY_DOMAIN_EXT property, in the <properties>
parameter of clCreateSubDeviceEXT:
|
static int |
CL_AFFINITY_DOMAIN_L2_CACHE_EXT
Accepted as a property name, when accompanying the
CL_DEVICE_PARITION_BY_AFFINITY_DOMAIN_EXT property, in the <properties>
parameter of clCreateSubDeviceEXT:
|
static int |
CL_AFFINITY_DOMAIN_L3_CACHE_EXT
Accepted as a property name, when accompanying the
CL_DEVICE_PARITION_BY_AFFINITY_DOMAIN_EXT property, in the <properties>
parameter of clCreateSubDeviceEXT:
|
static int |
CL_AFFINITY_DOMAIN_L4_CACHE_EXT
Accepted as a property name, when accompanying the
CL_DEVICE_PARITION_BY_AFFINITY_DOMAIN_EXT property, in the <properties>
parameter of clCreateSubDeviceEXT:
|
static int |
CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT
Accepted as a property name, when accompanying the
CL_DEVICE_PARITION_BY_AFFINITY_DOMAIN_EXT property, in the <properties>
parameter of clCreateSubDeviceEXT:
|
static int |
CL_AFFINITY_DOMAIN_NUMA_EXT
Accepted as a property name, when accompanying the
CL_DEVICE_PARITION_BY_AFFINITY_DOMAIN_EXT property, in the <properties>
parameter of clCreateSubDeviceEXT:
|
static int |
CL_DEVICE_AFFINITY_DOMAINS_EXT
Accepted as a property being queried in the <param_name> argument of
clGetDeviceInfo:
|
static int |
CL_DEVICE_PARENT_DEVICE_EXT
Accepted as a property being queried in the <param_name> argument of
clGetDeviceInfo:
|
static int |
CL_DEVICE_PARITION_TYPES_EXT
Accepted as a property being queried in the <param_name> argument of
clGetDeviceInfo:
|
static int |
CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT
Accepted as a property name in the <properties> parameter of
clCreateSubDeviceEXT:
|
static int |
CL_DEVICE_PARTITION_BY_COUNTS_EXT
Accepted as a property name in the <properties> parameter of
clCreateSubDeviceEXT:
|
static int |
CL_DEVICE_PARTITION_BY_NAMES_EXT
Accepted as a property name in the <properties> parameter of
clCreateSubDeviceEXT:
|
static int |
CL_DEVICE_PARTITION_EQUALLY_EXT
Accepted as a property name in the <properties> parameter of
clCreateSubDeviceEXT:
|
static int |
CL_DEVICE_PARTITION_FAILED_EXT
Returned by clCreateSubDevicesEXT when the indicated partition scheme is
supported by the implementation, but the implementation can not further
partition the device in this way.
|
static int |
CL_DEVICE_PARTITION_STYLE_EXT
Accepted as a property being queried in the <param_name> argument of
clGetDeviceInfo:
|
static int |
CL_DEVICE_REFERENCE_COUNT_EXT
Accepted as a property being queried in the <param_name> argument of
clGetDeviceInfo:
|
static int |
CL_INVALID_PARTITION_COUNT_EXT
Returned by clCreateSubDevicesEXT when the total number of compute units
requested exceeds CL_DEVICE_MAX_COMPUTE_UNITS, or the number of compute
units for any one sub-device is less than 1.
|
static int |
CL_INVALID_PARTITION_NAME_EXT
Returned by clCreateSubDevicesEXT when a compute unit name appearing in a
name list following CL_DEVICE_PARTITION_BY_NAMES_EXT is not in range.
|
static int |
CL_PARTITION_BY_COUNTS_LIST_END_EXT
Accepted as the partition counts list terminator in the <properties>
parameter of clCreateSubDeviceEXT:
|
static int |
CL_PARTITION_BY_NAMES_LIST_END_EXT
Accepted as the partition names list terminator in the <properties>
parameter of clCreateSubDeviceEXT:
|
static int |
CL_PROPERTIES_LIST_END_EXT
Accepted as the property list terminator in the <properties> parameter of
clCreateSubDeviceEXT:
|
| Modifier and Type | Method and Description |
|---|---|
static int |
clCreateSubDevicesEXT(CLDevice in_device,
java.nio.LongBuffer properties,
PointerBuffer out_devices,
java.nio.IntBuffer num_devices) |
static int |
clReleaseDeviceEXT(CLDevice device)
Warning: LWJGL will not automatically release any objects associated with sub-devices.
|
static int |
clRetainDeviceEXT(CLDevice device) |
public static final int CL_DEVICE_PARTITION_EQUALLY_EXT
public static final int CL_DEVICE_PARTITION_BY_COUNTS_EXT
public static final int CL_DEVICE_PARTITION_BY_NAMES_EXT
public static final int CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT
public static final int CL_AFFINITY_DOMAIN_L1_CACHE_EXT
public static final int CL_AFFINITY_DOMAIN_L2_CACHE_EXT
public static final int CL_AFFINITY_DOMAIN_L3_CACHE_EXT
public static final int CL_AFFINITY_DOMAIN_L4_CACHE_EXT
public static final int CL_AFFINITY_DOMAIN_NUMA_EXT
public static final int CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT
public static final int CL_DEVICE_PARENT_DEVICE_EXT
public static final int CL_DEVICE_PARITION_TYPES_EXT
public static final int CL_DEVICE_AFFINITY_DOMAINS_EXT
public static final int CL_DEVICE_REFERENCE_COUNT_EXT
public static final int CL_DEVICE_PARTITION_STYLE_EXT
public static final int CL_PROPERTIES_LIST_END_EXT
public static final int CL_PARTITION_BY_COUNTS_LIST_END_EXT
public static final int CL_PARTITION_BY_NAMES_LIST_END_EXT
public static final int CL_DEVICE_PARTITION_FAILED_EXT
public static final int CL_INVALID_PARTITION_COUNT_EXT
public static final int CL_INVALID_PARTITION_NAME_EXT
public static int clRetainDeviceEXT(CLDevice device)
public static int clReleaseDeviceEXT(CLDevice device)
device
- the parent CLDevice
public static int clCreateSubDevicesEXT(CLDevice in_device, java.nio.LongBuffer properties, PointerBuffer out_devices, java.nio.IntBuffer num_devices)
Copyright © 2002-2010 lwjgl.org. All Rights Reserved.


Contents
This is a design document detailing the implementation of self-repair and recreation of instances in Ganeti. It also discusses ideas that might be useful for more future self-repair situations.
Ganeti currently doesn’t do any sort of self-repair or self-recreate of instances:
Moreover in an oversubscribed cluster operations mentioned above might fail for lack of capacity until a node is repaired or a new one added. In this case an external tool would also need to go through any “pending-recreate” or “pending-repair” instances and fix them.
We’d like to increase the self-repair capabilities of Ganeti, at least with regards to instances. In order to do so we plan to add mechanisms to mark an instance as “due for being repaired” and then the relevant repair to be performed as soon as it’s possible, on the cluster.
The self repair will be written as part of ganeti-watcher or as an extra watcher component that is called less often.
As the first version we’ll only handle the case in which an instance lives on an offline or drained node. In the future we may add more self-repair capabilities for errors ganeti can detect.
In order to know when to perform a self-repair operation we need to know whether they are allowed by the cluster administrator.
This can be implemented as either new attributes or tags. Tags could be acceptable as they would only be read and interpreted by the self-repair tool (part of the watcher), and not by the ganeti core opcodes and node rpcs. The following tags would be needed:
(instance/nodegroup/cluster) Allow repairs to happen on an instance that has the tag, or that lives in a cluster or nodegroup which does. Types of repair are in order of perceived risk, lower to higher, and each type includes allowing the operations in the lower ones:
Each repair type allows all the operations in the previous types, in the order above, in order to ensure a repair can be completed fully. As such a repair of a lower type might not be able to proceed if it detects an error condition that requires a more risky or drastic solution, but never vice versa (if a worse solution is allowed then so is a better one).
If there are multiple ganeti:watcher:autorepair:<type> tags in an object (cluster, node group or instance), the least destructive tag takes precedence. When multiplicity happens across objects, the nearest tag wins. For example, if in a cluster with two instances, I1 and I2, I1 has failover, and the cluster itself has both fix-storage and reinstall, I1 will end up with failover and I2 with fix-storage.
(instance/nodegroup/cluster) If this tag is encountered no autorepair operations will start for the instance (or for any instance, if present at the cluster or group level). Any job which already started will be allowed to finish, but then the autorepair system will not proceed further until this tag is removed, or the timestamp passes (in which case the tag will be removed automatically by the watcher).
Note that depending on how this tag is used there might still be race conditions related to it for an external tool that uses it programmatically, as no “lock tag” or tag “test-and-set” operation is present at this time. While this is known we won’t solve these race conditions in the first version.
It might also be useful to easily have an operation that tags all instances matching a filter on some charateristic. But again, this wouldn’t be specific to this tag.
If there are multiple ganeti:watcher:autorepair:suspend[:<timestamp>] tags in an object, the form without timestamp takes precedence (permanent suspension); or, if all object tags have a timestamp, the one with the highest timestamp. When multiplicity happens across objects, the nearest tag wins, as above. This makes it possible to suspend cluster-enabled repairs with a single tag in the cluster object; or to suspend them only for a certain node group or instance. At the same time, it is possible to re-enable cluster-suspended repairs in a particular instance or group by applying an enable tag to them.
(instance) If this tag is present a repair of type type is pending on the target instance. This means that either jobs are being run, or it’s waiting for resource availability. id is the unique id identifying this repair, timestamp is the time when this tag was first applied to this instance for this id (we will “update” the tag by adding a “new copy” of it and removing the old version as we run more jobs, but the timestamp will never change for the same repair)
jobs is the list of jobs already run or being run to repair the instance (separated by a plus sign, +). If the instance has just been put in pending state but no job has run yet, this list is empty.
This tag will be set by ganeti if an equivalent autorepair tag is present and a a repair is needed, or can be set by an external tool to request a repair as a “once off”.
If multiple instances of this tag are present they will be handled in order of timestamp.
(instance) If this tag is present a repair of type type has been performed on the instance and has been completed by timestamp. The result is either success, failure or enoperm, and jobs is a +-separated list of jobs that were executed for this repair.
An enoperm result is returned when the repair was brought on until possible, but the repair type doesn’t consent to proceed further.
At any point an instance can be in one of the following health states:
The instance lives on only online nodes. The autorepair system will never touch these instances. Any repair:pending tags will be removed and marked success with no jobs attached to them.
This state can transition to:
Whenever a repair:suspend tag is added the autorepair code won’t touch the instance until the timestamp on the tag has passed, if present. The tag will be removed afterwards (and the instance will transition to its correct state, depending on its health and other tags).
Note that when an instance is suspended any pending repair is interrupted, but jobs which were submitted before the suspension are allowed to finish.
The instance lives on an offline or drained node, but no autorepair tag is set, or the autorepair tag set is of a type not powerful enough to finish the repair. The autorepair system will never touch these instances, and they can transition to:
A repair:pending tag is added, and the instance transitions to the Pending Repair state. The autorepair tag is preserved.
Of course if a repair:suspended tag is found no pending tag will be added, and the instance will instead transition to the Suspended state.
When an instance is in this stage the following will happen:
If a repair:suspended tag is found the instance won’t be touched and moved to the Suspended state. Any jobs which were already running will be left untouched.
If there are still jobs running related to the instance and scheduled by this repair they will be given more time to run, and the instance will be checked again later. The state transitions to itself.
If no jobs are running and the instance is detected to be healthy, the repair:result tag will be added, and the current active repair:pending tag will be removed. It will then transition to the Healthy state if there are no repair:pending tags, or to the Pending state otherwise: there, the instance being healthy, those tags will be resolved without any operation as well (note that this is the same as transitioning to the Healthy state, where repair:pending tags would also be resolved).
If no jobs are running and the instance still has issues:
If repairing an instance has failed a repair:result:failure is added. The presence of this tag is used to detect that an instance is in this state, and it will not be touched until the failure is investigated and the tag is removed.
An external tool or person needs to investigate the state of the instance and remove this tag when he is sure the instance is repaired and safe to turn back to the normal autorepair system.
(Alternatively we can use the suspended state (indefinitely or temporarily) to mark the instance as “not touch” when we think a human needs to look at it. To be decided).
A graph with the possible transitions follows; note that in the graph, following the implementation, the two Needs repair states have been coalesced into one; and the Suspended state disapears, for it becames an attribute of the instance object (its auto-repair policy).
Possible repairs are:
Note that more than one of these operations may need to happen before a full repair is completed (eg. if a drbd primary goes offline first a failover will happen, then a replce-disks).
The self-repair tool will first take care of all needs-repair instance that can be brought into pending state, and transition them as described above.
Then it will go through any repair:pending instances and handle them as described above.
Note that the repair tool MAY “group” instances by performing common repair jobs for them (eg: node evacuate).
First version: recreate-disks + reinstall (2.6.1) Second version: failover and migrate repairs (2.7) Third version: replace disks repair (2.7 or 2.8)
One important piece of work will be reporting what the autorepair system is “thinking” and exporting this in a form that can be read by an outside user or system. In order to do this we need a better communication system than embedding this information into tags. This should be thought in an extensible way that can be used in general for Ganeti to provide “advisory” information about entities it manages, and for an external system to “advise” ganeti over what it can do, but in a less direct manner than submitting individual jobs.
Note that cluster verify checks some errors that are actually instance specific, (eg. a missing backend disk on a drbd node) or node-specific (eg. an extra lvm device). If we were to split these into “instance verify”, “node verify” and “cluster verify”, then we could easily use this tool to perform some of those repairs as well.
Finally self-repairs could also be extended to the cluster level, for example concepts like “N+1 failures”, missing master candidates, etc. or node level for some specific types of errors.


Home
About
Features
Gallery
Pricing
FAQ
Blog
Contacts
Sign Up
Results:
Community:
0%
Execution:
0%
Integrity:
0%
Passion:
0%
10%
25%


Come and enjoy with some of the most popular movies in the world. Don't worry about your age because this festival wants to show that films can attract and be interesting to audiences of all ages.
Boston Public Garden,
4 Charles St, Boston,
MA 02108, United States, a park in Boston that can hold up to 1,500 people.
This year from August 5th through 8th, from 6pm to midnight.