示例#1
0
    def _new_file(cls, args):
        api._timeout = args.timeout
        format = args.format
        graphs = args.graphs
        if args.graphs is None:
            graphs = sys.stdin.read()
        try:
            graphs = json.loads(graphs)
        except:
            raise Exception('bad json parameter')
        res = api.Timeboard.create(
            title=args.filename,
            description="Description for {0}".format(args.filename),
            graphs=[graphs])

        report_warnings(res)
        report_errors(res)

        cls._write_dash_to_file(res['dash']['id'], args.filename,
                                args.timeout, format, args.string_ids)

        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#2
0
    def _update(cls, args):
        api._timeout = args.timeout
        format = args.format
        graphs = args.graphs
        if args.graphs is None:
            graphs = sys.stdin.read()
        try:
            graphs = json.loads(graphs)
        except:
            raise Exception('bad json parameter')

        res = api.Screenboard.update(
            args.screenboard_id,
            title=args.title,
            description=args.description,
            graphs=graphs,
            template_variables=args.template_variables,
            width=args.width,
            height=args.height)
        report_warnings(res)
        report_errors(res)
        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#3
0
    def _push(cls, args):
        api._timeout = args.timeout
        for f in args.file:
            screen_obj = json.load(f)

            if args.append_auto_text:
                datetime_str = datetime.now().strftime("%x %X")
                auto_text = "<br/>\nUpdated at {0} from {1} ({2}) on {3}".format(
                    datetime_str, f.name, screen_obj["id"], platform.node())
                screen_obj["description"] += auto_text

            if "id" in screen_obj:
                # Always convert to int, in case it was originally a string.
                screen_obj["id"] = int(screen_obj["id"])
                res = api.Screenboard.update(**screen_obj)
            else:
                res = api.Screenboard.create(**screen_obj)

            if "errors" in res:
                print_err(
                    "Upload of screenboard {0} from file {1} failed.".format(
                        screen_obj["id"], f.name))

            report_warnings(res)
            report_errors(res)

            if format == "pretty":
                print(pretty_json(res))
            else:
                print(json.dumps(res))

            if args.format == "pretty":
                print("Uploaded file {0} (screenboard {1})".format(
                    f.name, screen_obj["id"]))
示例#4
0
    def _post(cls, args):
        api._timeout = args.timeout
        format = args.format
        options = None
        if args.options is not None:
            try:
                options = json.loads(args.options)
            except:
                raise Exception('bad json parameter')

        if args.tags:
            tags = sorted(
                set([t.strip() for t in args.tags.split(',') if t.strip()]))
        else:
            tags = None

        res = api.Monitor.create(type=args.type,
                                 query=args.query,
                                 name=args.name,
                                 message=args.message,
                                 tags=tags,
                                 options=options)
        report_warnings(res)
        report_errors(res)
        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#5
0
    def _push(cls, args):
        api._timeout = args.timeout
        for f in args.file:
            try:
                screen_obj = json.load(f)
            except Exception as err:
                raise Exception("Could not parse {0}: {1}".format(f.name, err))

            if args.append_auto_text:
                datetime_str = datetime.now().strftime('%x %X')
                auto_text = ("<br/>\nUpdated at {0} from {1} ({2}) on {3}"
                             .format(datetime_str, f.name, screen_obj["id"], platform.node()))
                screen_obj["description"] += auto_text

            if 'id' in screen_obj:
                # Always convert to int, in case it was originally a string.
                screen_obj["id"] = int(screen_obj["id"])
                res = api.Screenboard.update(**screen_obj)
            else:
                res = api.Screenboard.create(**screen_obj)

            if 'errors' in res:
                print_err('Upload of screenboard {0} from file {1} failed.'
                          .format(screen_obj["id"], f.name))

            report_warnings(res)
            report_errors(res)

            if format == 'pretty':
                print(pretty_json(res))
            else:
                print(json.dumps(res))

            if args.format == 'pretty':
                print("Uploaded file {0} (screenboard {1})".format(f.name, screen_obj["id"]))
示例#6
0
    def _validate(cls, args):
        api._timeout = args.timeout
        format = args.format
        options = None
        if args.options is not None:
            options = json.loads(args.options)

        if args.tags:
            tags = sorted(
                set([t.strip() for t in args.tags.split(",") if t.strip()]))
        else:
            tags = None

        res = api.Monitor.validate(type=args.type,
                                   query=args.query,
                                   name=args.name,
                                   message=args.message,
                                   tags=tags,
                                   options=options)
        # report_warnings(res)
        # report_errors(res)
        if format == "pretty":
            print(pretty_json(res))
        else:
            print(json.dumps(res))
    def _show_all(cls, args):
        api._timeout = args.timeout
        format = args.format

        res = api.Monitor.get_all(
            group_states=args.group_states, name=args.name,
            tags=args.tags, monitor_tags=args.monitor_tags
        )
        report_warnings(res)
        report_errors(res)

        if args.string_ids:
            for d in res:
                d["id"] = str(d["id"])

        if format == 'pretty':
            print(pretty_json(res))
        elif format == 'raw':
            print(json.dumps(res))
        else:
            for d in res:
                print("\t".join([(str(d["id"])),
                                 (cls._escape(d["message"])),
                                 (cls._escape(d["name"])),
                                 (str(d["options"])),
                                 (str(d["org_id"])),
                                 (d["query"]),
                                 (d["type"])]))
示例#8
0
    def _update(cls, args):
        api._timeout = args.timeout
        format = args.format
        widgets = args.widgets
        if args.widgets is None:
            widgets = sys.stdin.read()
        try:
            widgets = json.loads(widgets)
        except:
            raise Exception('bad json parameter')

        # Required arguments
        payload = {
            "title": args.title,
            "widgets": widgets,
            "layout_type": args.layout_type
        }
        # Optional arguments
        if (args.description):
            payload["description"] = args.description
        if (args.read_only):
            payload["is_read_only"] = args.read_only
        if (args.notify_list):
            payload["notify_list"] = args.notify_list
        if (args.template_variables):
            payload["template_variables"] = args.template_variables

        res = api.Dashboard.update(args.dashboard_id, **payload)
        report_warnings(res)
        report_errors(res)
        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#9
0
    def _show_all(cls, args):
        api._timeout = args.timeout
        format = args.format

        res = api.Monitor.get_all(group_states=args.group_states,
                                  name=args.name,
                                  tags=args.tags,
                                  monitor_tags=args.monitor_tags)
        report_warnings(res)
        report_errors(res)

        if args.string_ids:
            for d in res:
                d["id"] = str(d["id"])

        if format == 'pretty':
            print(pretty_json(res))
        elif format == 'raw':
            print(json.dumps(res))
        else:
            for d in res:
                print("\t".join([(str(d["id"])), (cls._escape(d["message"])),
                                 (cls._escape(d["name"])), (str(d["options"])),
                                 (str(d["org_id"])), (d["query"]),
                                 (d["type"])]))
示例#10
0
    def _post(cls, args):
        api._timeout = args.timeout
        format = args.format
        widgets = args.widgets
        if args.widgets is None:
            widgets = sys.stdin.read()
        widgets = json.loads(widgets)

        # Required arguments
        payload = {
            "title": args.title,
            "widgets": widgets,
            "layout_type": args.layout_type
        }
        # Optional arguments
        if args.description:
            payload["description"] = args.description
        if args.read_only:
            payload["is_read_only"] = args.read_only
        if args.notify_list:
            payload["notify_list"] = args.notify_list
        if args.template_variables:
            payload["template_variables"] = args.template_variables

        res = api.Dashboard.create(**payload)
        report_warnings(res)
        report_errors(res)
        if format == "pretty":
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#11
0
 def _cancel_downtime_by_scope(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Downtime.cancel_downtime_by_scope(scope=args.scope)
     if format == "pretty":
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#12
0
    def _share(cls, args):
        api._timeout = args.timeout
        format = args.format
        res = api.Screenboard.share(args.screenboard_id)

        if format == "pretty":
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#13
0
    def _create(cls, args):
        api._timeout = args.timeout
        format = args.format

        params = {"type": args.type, "name": args.name}

        if args.tags:
            tags = sorted(
                set([t.strip() for t in args.tags.split(",") if t.strip()]))
            params["tags"] = tags

        thresholds = []
        for threshold_str in args.thresholds.split(","):
            parts = threshold_str.split(":")
            timeframe = parts[0]
            target = float(parts[1])

            threshold = {"timeframe": timeframe, "target": target}

            if len(parts) > 2:
                threshold["warning"] = float(parts[2])

            if len(parts) > 3 and parts[3]:
                threshold["target_display"] = parts[3]

            if len(parts) > 4 and parts[4]:
                threshold["warning_display"] = parts[4]

            thresholds.append(threshold)
        params["thresholds"] = thresholds

        if args.description:
            params["description"] = args.description

        if args.type == "metric":
            params["query"] = {
                "numerator": args.numerator,
                "denominator": args.denominator,
            }
        elif args.monitor_search:
            params["monitor_search"] = args.monitor_search
        else:
            params["monitor_ids"] = list(args.monitor_ids)
            if args.groups and len(args.monitor_ids) == 1:
                groups = args.groups.split("|")
                params["groups"] = groups

        if args.tags:
            params["tags"] = args.tags

        res = api.ServiceLevelObjective.create(**params)
        report_warnings(res)
        report_errors(res)
        if format == "pretty":
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#14
0
 def _unmute(cls, args):
     api._timeout = args.timeout
     res = api.Monitor.unmute(args.monitor_id, scope=args.scope, all_scopes=args.all_scopes)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#15
0
    def _revoke(cls, args):
        api._timeout = args.timeout
        format = args.format
        res = api.Screenboard.revoke(args.screenboard_id)

        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#16
0
 def _unmute(cls, args):
     api._timeout = args.timeout
     res = api.Monitor.unmute(args.monitor_id, scope=args.scope, all_scopes=args.all_scopes)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#17
0
 def _mute_all(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Monitor.mute_all()
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#18
0
 def _show_downtime(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Downtime.get(args.downtime_id)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#19
0
 def _can_delete(cls, args):
     api._timeout = args.timeout
     monitor_ids = [
         i.strip() for i in args.monitor_ids.split(',') if i.strip()
     ]
     res = api.Monitor.can_delete(monitor_ids=monitor_ids)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#20
0
 def _unmute(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Host.unmute(args.host_name)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#21
0
 def _show_all_downtime(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Downtime.get_all(current_only=args.current_only)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#22
0
 def _show_all_downtime(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Downtime.get_all(current_only=args.current_only)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#23
0
 def _show_downtime(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Downtime.get(args.downtime_id)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#24
0
 def _mute_all(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Monitor.mute_all()
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#25
0
文件: host.py 项目: dcrosta/datadogpy
 def _unmute(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Host.unmute(args.host_name)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#26
0
 def _mute(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Monitor.mute(args.monitor_id, scope=args.scope, end=args.end)
     report_warnings(res)
     report_errors(res)
     if format == "pretty":
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#27
0
 def _file_create(cls, args):
     api._timeout = args.timeout
     format = args.format
     slo = json.load(args.file)
     res = api.ServiceLevelObjective.create(return_raw=True, **slo)
     report_warnings(res)
     report_errors(res)
     if format == "pretty":
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#28
0
 def _update_downtime(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Downtime.update(args.downtime_id, scope=args.scope, start=args.start,
                               end=args.end, message=args.message)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#29
0
文件: host.py 项目: dcrosta/datadogpy
 def _mute(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Host.mute(args.host_name, end=args.end, message=args.message,
                         override=args.override)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#30
0
    def _show(cls, args):
        api._timeout = args.timeout
        format = args.format
        res = api.Dashboard.get(args.dashboard_id)
        report_warnings(res)
        report_errors(res)

        if format == "pretty":
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#31
0
    def _delete_many(cls, args):
        api._timeout = args.timeout
        res = api.ServiceLevelObjective.delete_many(args.slo_ids)
        if res is not None:
            report_warnings(res)
            report_errors(res)

            if format == "pretty":
                print(pretty_json(res))
            else:
                print(json.dumps(res))
示例#32
0
文件: host.py 项目: swill/datadogpy
 def _mute(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Host.mute(args.host_name, end=args.end, message=args.message,
                         override=args.override)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#33
0
 def _check(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.ServiceCheck.check(
         check=args.check, host_name=args.host_name, status=int(args.status),
         timestamp=args.timestamp, message=args.message, tags=args.tags)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#34
0
    def _show_all(cls, args):
        api._timeout = args.timeout
        format = args.format

        res = api.DashboardList.get_all()
        report_warnings(res)
        report_errors(res)

        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#35
0
 def _schedule_downtime(cls, args):
     api._timeout = args.timeout
     format = args.format
     res = api.Downtime.create(scope=args.scope,
                               start=args.start,
                               end=args.end,
                               message=args.message)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#36
0
    def _delete(cls, args):
        api._timeout = args.timeout
        format = args.format
        dashboard_list_id = args.dashboard_list_id

        res = api.DashboardList.delete(dashboard_list_id)
        report_warnings(res)
        report_errors(res)

        if format == "pretty":
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#37
0
    def _show_dashboards(cls, args):
        api._timeout = args.timeout
        format = args.format
        dashboard_list_id = args.dashboard_list_id

        res = api.DashboardList.get_items(dashboard_list_id)
        report_warnings(res)
        report_errors(res)

        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#38
0
    def _post(cls, args):
        api._timeout = args.timeout
        format = args.format
        name = args.name

        res = api.DashboardList.create(name=name)
        report_warnings(res)
        report_errors(res)

        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#39
0
 def _file_update(cls, args):
     api._timeout = args.timeout
     format = args.format
     monitor = json.load(args.file)
     res = api.Monitor.update(monitor['id'], type=monitor['type'], query=monitor['query'],
                              name=monitor['name'], message=monitor['message'],
                              options=monitor['options'])
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#40
0
    def _show(cls, args):
        api._timeout = args.timeout
        format = args.format
        res = api.Timeboard.get(args.timeboard_id)
        report_warnings(res)
        report_errors(res)

        if args.string_ids:
            res["dash"]["id"] = str(res["dash"]["id"])

        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#41
0
 def _update(cls, args):
     api._timeout = args.timeout
     format = args.format
     options = None
     if args.options is not None:
         try:
             options = json.loads(args.options)
         except:
             raise Exception('bad json parameter')
     res = api.Monitor.update(args.monitor_id, type=args.type, query=args.query,
                              name=args.name, message=args.message, options=options)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#42
0
 def _post(cls, args):
     api._timeout = args.timeout
     format = args.format
     graphs = args.graphs
     if args.graphs is None:
         graphs = sys.stdin.read()
     try:
         graphs = json.loads(graphs)
     except:
         raise Exception('bad json parameter')
     res = api.Timeboard.create(title=args.title, description=args.description, graphs=[graphs],
                                template_variables=args.template_variables)
     report_warnings(res)
     report_errors(res)
     if format == 'pretty':
         print(pretty_json(res))
     else:
         print(json.dumps(res))
示例#43
0
    def _show_all(cls, args):
        api._timeout = args.timeout
        format = args.format
        res = api.Timeboard.get_all()
        report_warnings(res)
        report_errors(res)

        if args.string_ids:
            for d in res["dashes"]:
                d["id"] = str(d["id"])

        if format == 'pretty':
            print(pretty_json(res))
        elif format == 'raw':
            print(json.dumps(res))
        else:
            for d in res["dashes"]:
                print("\t".join([(d["id"]),
                                 (d["resource"]),
                                 (d["title"]),
                                 cls._escape(d["description"])]))
示例#44
0
    def _update(cls, args):
        api._timeout = args.timeout
        format = args.format
        graphs = args.graphs
        if args.graphs is None:
            graphs = sys.stdin.read()
        try:
            graphs = json.loads(graphs)
        except:
            raise Exception('bad json parameter')

        res = api.Screenboard.update(
            args.screenboard_id, title=args.title, description=args.description,
            graphs=graphs, template_variables=args.template_variables,
            width=args.width, height=args.height)
        report_warnings(res)
        report_errors(res)
        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))
示例#45
0
    def _push(cls, args):
        api._timeout = args.timeout
        for f in args.file:
            try:
                dash_obj = json.load(f)
            except Exception as err:
                raise Exception("Could not parse {0}: {1}".format(f.name, err))

            if args.append_auto_text:
                datetime_str = datetime.now().strftime('%x %X')
                auto_text = ("<br/>\nUpdated at {0} from {1} ({2}) on {3}"
                             .format(datetime_str, f.name, dash_obj["id"], platform.node()))
                dash_obj["description"] += auto_text
            tpl_vars = dash_obj.get("template_variables", [])

            if 'id' in dash_obj:
                # Always convert to int, in case it was originally a string.
                dash_obj["id"] = int(dash_obj["id"])
                res = api.Timeboard.update(dash_obj["id"], title=dash_obj["title"],
                                           description=dash_obj["description"],
                                           graphs=dash_obj["graphs"], template_variables=tpl_vars)
            else:
                res = api.Timeboard.create(title=dash_obj["title"],
                                           description=dash_obj["description"],
                                           graphs=dash_obj["graphs"], template_variables=tpl_vars)

            if 'errors' in res:
                print_err('Upload of dashboard {0} from file {1} failed.'
                          .format(dash_obj["id"], f.name))

            report_warnings(res)
            report_errors(res)

            if format == 'pretty':
                print(pretty_json(res))
            else:
                print(json.dumps(res))

            if args.format == 'pretty':
                print("Uploaded file {0} (dashboard {1})".format(f.name, dash_obj["id"]))
示例#46
0
    def _new_file(cls, args):
        api._timeout = args.timeout
        format = args.format
        graphs = args.graphs
        if args.graphs is None:
            graphs = sys.stdin.read()
        try:
            graphs = json.loads(graphs)
        except:
            raise Exception('bad json parameter')
        res = api.Screenboard.create(title=args.filename,
                                     description="Description for {0}".format(args.filename),
                                     graphs=[graphs])
        report_warnings(res)
        report_errors(res)

        cls._write_screen_to_file(res['id'], args.filename, args.timeout, format, args.string_ids)

        if format == 'pretty':
            print(pretty_json(res))
        else:
            print(json.dumps(res))