def run(self, productName, version, build_number, rule_ids, when, backgroundRate=None): name = get_release_blob_name(productName, version, build_number, self.dummy) for rule_id in rule_ids: data, data_version = Rule(api_root=self.api_root, auth=self.auth, rule_id=rule_id).get_data() data["fallbackMapping"] = data["mapping"] data["mapping"] = name data["data_verison"] = data_version data["rule_id"] = rule_id data["change_type"] = "update" # We receive an iso8601 datetime, but what Balrog needs is a to-the-millisecond epoch timestamp data["when"] = arrow.get(when).timestamp * 1000 if backgroundRate: data["backgroundRate"] = backgroundRate ScheduledRuleChange( api_root=self.api_root, auth=self.auth, rule_id=rule_id).add_scheduled_rule_change(**data)
def run(self, productName, version, build_number, rule_ids, backgroundRate=None): name = get_release_blob_name(productName, version, build_number, self.suffix) for rule_id in rule_ids: data = {"mapping": name} if backgroundRate: data["backgroundRate"] = backgroundRate Rule(api_root=self.api_root, auth=self.auth, rule_id=rule_id ).update_rule(**data)
def run(self, productName, version, build_number, rule_ids, when=None, backgroundRate=None): name = get_release_blob_name(productName, version, build_number, self.suffix) if when is not None: when = arrow.get(when) soon = arrow.now().shift(minutes=5) if when is None or when < soon: when = soon for rule_id in rule_ids: data, data_version = Rule(api_root=self.api_root, auth=self.auth, rule_id=rule_id).get_data() # If the _currently_ shipped release is at a background rate of # 100%, it's safe to set it as the fallback mapping. (Everyone # was getting it anyways, so it's OK for them to fall back to # it if they don't get the even newer one.) # If it was _not_ shipped at 100%, we can't set it as the fallback. # If we did, it would mean users on the wrong side of the die roll # would either get the even newer release, or the release that # previously wasn't shipped to everyone - which we can't assume is # safe. if data["backgroundRate"] == 100: data["fallbackMapping"] = data["mapping"] data["mapping"] = name data["data_verison"] = data_version data["rule_id"] = rule_id data["change_type"] = "update" # We receive an iso8601 datetime, but what Balrog needs is a to-the-millisecond epoch timestamp data["when"] = when.timestamp * 1000 if backgroundRate: data["backgroundRate"] = backgroundRate ScheduledRuleChange( api_root=self.api_root, auth=self.auth, rule_id=rule_id).add_scheduled_rule_change(**data)
execfile(args.credentials_file, credentials) auth = (args.username, credentials['balrog_credentials'][args.username]) if args.action == ["lock"]: my_args = args.action_args if len(my_args) > 1: parser.error("Unsupported number of args for the lock command.") for rule_id in args.rule_ids: release_name = None if len(my_args) == 1: release_name = args[0] if not release_name: rule_data, _ = Rule(api_root=args.api_root, auth=auth, rule_id=rule_id).get_data() latest_blob_name = rule_data["mapping"] release = Release(api_root=args.api_root, auth=auth, name=latest_blob_name) release_data, _ = release.get_data() buildid = None for p in release_data["platforms"].values(): enUS = p.get("locales", {}).get("en-US", {}) next_buildid = enUS.get("buildID") if next_buildid > buildid: buildid = next_buildid if not buildid: logging.error("Couldn't find latest buildid for rule %s", rule_id)
def run(self, productName, version, build_number, rule_ids): name = get_release_blob_name(productName, version, build_number, self.dummy) for rule_id in rule_ids: Rule(api_root=self.api_root, auth=self.auth, rule_id=rule_id).update_rule(mapping=name)
def run(self, productName, version, build_number, rule_ids): name = get_release_blob_name(productName, version, build_number, self.dummy) api = Rule(auth=self.auth, api_root=self.api_root) for id_ in rule_ids: api.update_rule(id_, mapping=name)