Skip to content

Commit

Permalink
Merge pull request #966 from nacc/metahost_clone
Browse files Browse the repository at this point in the history
frontend: fix metahost + profile clone
  • Loading branch information
lmr committed Sep 9, 2015
2 parents 3584e51 + aba27eb commit 64fbfd5
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 12 deletions.
6 changes: 5 additions & 1 deletion frontend/afe/rpc_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -1089,12 +1089,16 @@ def get_info_for_clone(id, preserve_metahosts, queue_entry_filter_data=None):
locked_text='')
host_dicts.append(host_dict)

meta_host_dicts = []
# convert keys from Label objects to strings (names of labels)
meta_host_counts = dict((meta_host.name, count) for meta_host, count
in job_info['meta_host_counts'].iteritems())
for meta_host, meta_host_profile in zip(job_info['meta_hosts'], job_info['meta_host_profiles']):
meta_host_dict = dict(name=meta_host.name, count=meta_host_counts[meta_host.name], profile=meta_host_profile)
meta_host_dicts.append(meta_host_dict)

info = dict(job=job.get_object_dict(),
meta_host_counts=meta_host_counts,
meta_hosts=meta_host_dicts,
hosts=host_dicts)
info['job']['dependencies'] = job_info['dependencies']
if job_info['atomic_group']:
Expand Down
13 changes: 7 additions & 6 deletions frontend/client/src/autotest/afe/HostSelector.java
Original file line number Diff line number Diff line change
Expand Up @@ -291,10 +291,10 @@ private void onAddByLabel() {
return;
}

addMetaHosts(label, number);
addMetaHosts(label, number, "");
}

public void addMetaHosts(final String label, final String number) {
public void addMetaHosts(final String label, final String number, final String profile) {
JSONObject params = new JSONObject();
profileDataSource.query(params, new DefaultDataCallback () {
@Override
Expand All @@ -304,12 +304,12 @@ public void onQueryReady(Query query) {

@Override
public void handlePage(List<JSONObject> data) {
processAddByLabel(label, number, data);
processAddByLabel(label, number, profile, data);
}
});
}

private void processAddByLabel(final String label, final String number, List<JSONObject> data) {
private void processAddByLabel(final String label, final String number, final String profile, List<JSONObject> data) {
JSONObject metaObject = new JSONObject();
JSONArray profiles = new JSONArray();
int i = 0;
Expand All @@ -319,8 +319,9 @@ private void processAddByLabel(final String label, final String number, List<JSO
metaObject.put("status", new JSONString(""));
metaObject.put("locked_text", new JSONString(""));
metaObject.put("id", new JSONNumber(--META_INDEX));
for (JSONObject profile : data) {
String p = profile.get("name").toString();
metaObject.put("profile", new JSONString(profile));
for (JSONObject prof : data) {
String p = prof.get("name").toString();
// JSON seems to insert extra quotes
profiles.set(i, new JSONString(p.substring(1, p.length()-1)));
i++;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,12 +178,12 @@ public void cloneJob(JSONValue cloneInfo) {
}
hostSelector.setSelectedHostnames(hostnames, profiles, true);

JSONObject metaHostCounts = cloneObject.get("meta_host_counts").isObject();
JSONArray metaHostInfo = cloneObject.get("meta_hosts").isArray();

for (String label : metaHostCounts.keySet()) {
String number = Integer.toString(
(int) metaHostCounts.get(label).isNumber().doubleValue());
hostSelector.addMetaHosts(label, number);
for (JSONObject metaHost : new JSONArrayList<JSONObject>(metaHostInfo)) {
hostSelector.addMetaHosts(Utils.jsonToString(metaHost.get("name")),
Utils.jsonToString(metaHost.get("count")),
Utils.jsonToString(metaHost.get("profile")));
}

hostSelector.refresh();
Expand Down

0 comments on commit 64fbfd5

Please sign in to comment.