add rca mock
Change-Id: I291eb72881af445fd9eb20a96a9096ec108a97fe
This commit is contained in:
parent
67e9a8d19d
commit
5ef520b28d
36
etc/vitrage/alarms.sample.json
Normal file
36
etc/vitrage/alarms.sample.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"alarms":
|
||||
[
|
||||
{
|
||||
"id": "04cf683b-58a8-4b59-941a-9a1594fa0fe7",
|
||||
"project_id": "da3a1ab32-1c62-22cb-bf04-660bd33cd74d",
|
||||
"state": "available",
|
||||
"update_timestamp": "2016-01-18T06:14:20.782134+00:00",
|
||||
"category": "alarm",
|
||||
"type": "CPU_HIGH",
|
||||
"name": "cpu high",
|
||||
"severity": "major"
|
||||
},
|
||||
{
|
||||
"id": "05af123a-56a2-4b59-741a-7b1482dabac2",
|
||||
"project_id": "da3a1ab32-1c62-22cb-bf04-660bd33cd74d",
|
||||
"state": "available",
|
||||
"update_timestamp": "2016-01-18T06:12:28.987651+00:00",
|
||||
"category": "alarm",
|
||||
"type": "NO_SPACE_ON_DISK",
|
||||
"name": "no space on disk",
|
||||
"severity": "critical"
|
||||
},
|
||||
{
|
||||
"id": "123f456a-12b2-9c51-345d-8b2604adbada7",
|
||||
"project_id": "da3a1ab32-1c62-22cb-bf04-660bd33cd74d",
|
||||
"state": "available",
|
||||
"update_timestamp": "2016-01-18T06:14:38.123456+00:00",
|
||||
"category": "alarm",
|
||||
"type": "OUT_OF_MEMORY",
|
||||
"name": "out of memory",
|
||||
"severity": "critical"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
276
etc/vitrage/graph.sample.json
Normal file
276
etc/vitrage/graph.sample.json
Normal file
@ -0,0 +1,276 @@
|
||||
{
|
||||
"directed": true,
|
||||
"graph": {
|
||||
|
||||
},
|
||||
"nodes": [
|
||||
{
|
||||
"state": "RUNNING",
|
||||
"name": "node1",
|
||||
"id": 0
|
||||
},
|
||||
{
|
||||
"state": "ERROR",
|
||||
"name": "zone0",
|
||||
"id": 1
|
||||
},
|
||||
{
|
||||
"state": "SUBOPTIMAL",
|
||||
"name": "zone1",
|
||||
"id": 2
|
||||
},
|
||||
{
|
||||
"state": "RUNNING",
|
||||
"name": "zone2",
|
||||
"id": 3
|
||||
},
|
||||
{
|
||||
"state": "ERROR",
|
||||
"name": "host0",
|
||||
"id": 4
|
||||
},
|
||||
{
|
||||
"state": "SUBOPTIMAL",
|
||||
"name": "host1",
|
||||
"id": 5
|
||||
},
|
||||
{
|
||||
"state": "RUNNING",
|
||||
"name": "host2",
|
||||
"id": 6
|
||||
},
|
||||
{
|
||||
"state": "ERROR",
|
||||
"name": "host3",
|
||||
"id": 7
|
||||
},
|
||||
{
|
||||
"state": "SUBOPTIMAL",
|
||||
"name": "host4",
|
||||
"id": 8
|
||||
},
|
||||
{
|
||||
"state": "RUNNING",
|
||||
"name": "host5",
|
||||
"id": 9
|
||||
},
|
||||
{
|
||||
"state": "ERROR",
|
||||
"name": "host6",
|
||||
"id": 10
|
||||
},
|
||||
{
|
||||
"state": "SUBOPTIMAL",
|
||||
"name": "vm0",
|
||||
"id": 11
|
||||
},
|
||||
{
|
||||
"state": "RUNNING",
|
||||
"name": "vm1",
|
||||
"id": 12
|
||||
},
|
||||
{
|
||||
"state": "ERROR",
|
||||
"name": "vm2",
|
||||
"id": 13
|
||||
},
|
||||
{
|
||||
"state": "SUBOPTIMAL",
|
||||
"name": "vm3",
|
||||
"id": 14
|
||||
},
|
||||
{
|
||||
"state": "RUNNING",
|
||||
"name": "vm4",
|
||||
"id": 15
|
||||
},
|
||||
{
|
||||
"state": "ERROR",
|
||||
"name": "vm5",
|
||||
"id": 16
|
||||
},
|
||||
{
|
||||
"state": "SUBOPTIMAL",
|
||||
"name": "vm6",
|
||||
"id": 17
|
||||
},
|
||||
{
|
||||
"state": "RUNNING",
|
||||
"name": "vm7",
|
||||
"id": 18
|
||||
},
|
||||
{
|
||||
"state": "ERROR",
|
||||
"name": "vm8",
|
||||
"id": 19
|
||||
},
|
||||
{
|
||||
"state": "SUBOPTIMAL",
|
||||
"name": "vm9",
|
||||
"id": 20
|
||||
},
|
||||
{
|
||||
"state": "RUNNING",
|
||||
"name": "vm10",
|
||||
"id": 21
|
||||
},
|
||||
{
|
||||
"state": "ERROR",
|
||||
"name": "vm11",
|
||||
"id": 22
|
||||
},
|
||||
{
|
||||
"state": "SUBOPTIMAL",
|
||||
"name": "vm12",
|
||||
"id": 23
|
||||
},
|
||||
{
|
||||
"state": "RUNNING",
|
||||
"name": "vm13",
|
||||
"id": 24
|
||||
},
|
||||
{
|
||||
"state": "ERROR",
|
||||
"name": "vm14",
|
||||
"id": 25
|
||||
},
|
||||
{
|
||||
"state": "SUBOPTIMAL",
|
||||
"name": "vm15",
|
||||
"id": 26
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"source": 1,
|
||||
"target": 0,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 2,
|
||||
"target": 0,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 3,
|
||||
"target": 0,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 4,
|
||||
"target": 2,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 5,
|
||||
"target": 1,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 6,
|
||||
"target": 3,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 7,
|
||||
"target": 2,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 8,
|
||||
"target": 1,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 9,
|
||||
"target": 3,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 10,
|
||||
"target": 2,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 11,
|
||||
"target": 6,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 12,
|
||||
"target": 5,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 13,
|
||||
"target": 4,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 14,
|
||||
"target": 10,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 15,
|
||||
"target": 9,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 16,
|
||||
"target": 8,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 17,
|
||||
"target": 7,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 18,
|
||||
"target": 6,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 19,
|
||||
"target": 5,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 20,
|
||||
"target": 4,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 21,
|
||||
"target": 10,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 22,
|
||||
"target": 9,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 23,
|
||||
"target": 8,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 24,
|
||||
"target": 7,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 25,
|
||||
"target": 6,
|
||||
"relationship": "contains"
|
||||
},
|
||||
{
|
||||
"source": 26,
|
||||
"target": 5,
|
||||
"relationship": "contains"
|
||||
}
|
||||
],
|
||||
"multigraph": false
|
||||
}
|
55
etc/vitrage/rca.sample.json
Normal file
55
etc/vitrage/rca.sample.json
Normal file
@ -0,0 +1,55 @@
|
||||
{
|
||||
"directed": true,
|
||||
"graph": {
|
||||
|
||||
},
|
||||
"nodes": [
|
||||
{
|
||||
"category": "ALARM",
|
||||
"type": "nagios",
|
||||
"name": "CPU load",
|
||||
"state": "Active",
|
||||
"severity": "WARNING",
|
||||
"timestamp": "2015-12-01T12:46:41Z",
|
||||
"info": "WARNING - 15min load 1.66 at 32 CPUs",
|
||||
"resource_type": "nova.host",
|
||||
"resource_name": "host0",
|
||||
"id": 0
|
||||
},
|
||||
{
|
||||
"category": "ALARM",
|
||||
"type": "vitrage",
|
||||
"name": "Machine might be suffering due to high CPU load on the host",
|
||||
"state": "Active",
|
||||
"severity": "WARNING",
|
||||
"timestamp": "2015-12-01T12:46:41Z",
|
||||
"resource_type": "nova.instance",
|
||||
"resource_name": "vm0",
|
||||
"id": 1
|
||||
},
|
||||
{
|
||||
"category": "ALARM",
|
||||
"type": "vitrage",
|
||||
"name": "Machine might be suffering due to high CPU load on the host",
|
||||
"state": "Active",
|
||||
"severity": "WARNING",
|
||||
"timestamp": "2015-12-01T12:46:41Z",
|
||||
"resource_type": "nova.instance",
|
||||
"resource_name": "vm1",
|
||||
"id": 2
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"source": 0,
|
||||
"target": 1,
|
||||
"relationship": "causes"
|
||||
},
|
||||
{
|
||||
"source": 0,
|
||||
"target": 2,
|
||||
"relationship": "causes"
|
||||
}
|
||||
],
|
||||
"multigraph": false
|
||||
}
|
424
etc/vitrage/vitrage.conf.sample
Normal file
424
etc/vitrage/vitrage.conf.sample
Normal file
@ -0,0 +1,424 @@
|
||||
[DEFAULT]
|
||||
|
||||
#
|
||||
# From oslo.log
|
||||
#
|
||||
|
||||
# If set to true, the logging level will be set to DEBUG instead of the default
|
||||
# INFO level. (boolean value)
|
||||
#debug = false
|
||||
|
||||
# If set to false, the logging level will be set to WARNING instead of the
|
||||
# default INFO level. (boolean value)
|
||||
# This option is deprecated for removal.
|
||||
# Its value may be silently ignored in the future.
|
||||
#verbose = true
|
||||
|
||||
# The name of a logging configuration file. This file is appended to any
|
||||
# existing logging configuration files. For details about logging configuration
|
||||
# files, see the Python logging module documentation. Note that when logging
|
||||
# configuration files are used all logging configuration is defined in the
|
||||
# configuration file and other logging configuration options are ignored (for
|
||||
# example, log_format). (string value)
|
||||
# Deprecated group/name - [DEFAULT]/log_config
|
||||
#log_config_append = <None>
|
||||
|
||||
# DEPRECATED. A logging.Formatter log message format string which may use any
|
||||
# of the available logging.LogRecord attributes. This option is deprecated.
|
||||
# Please use logging_context_format_string and logging_default_format_string
|
||||
# instead. This option is ignored if log_config_append is set. (string value)
|
||||
#log_format = <None>
|
||||
|
||||
# Defines the format string for %%(asctime)s in log records. Default:
|
||||
# %(default)s . This option is ignored if log_config_append is set. (string
|
||||
# value)
|
||||
#log_date_format = %Y-%m-%d %H:%M:%S
|
||||
|
||||
# (Optional) Name of log file to send logging output to. If no default is set,
|
||||
# logging will go to stderr as defined by use_stderr. This option is ignored if
|
||||
# log_config_append is set. (string value)
|
||||
# Deprecated group/name - [DEFAULT]/logfile
|
||||
#log_file = <None>
|
||||
|
||||
# (Optional) The base directory used for relative log_file paths. This option
|
||||
# is ignored if log_config_append is set. (string value)
|
||||
# Deprecated group/name - [DEFAULT]/logdir
|
||||
#log_dir = <None>
|
||||
|
||||
# Uses logging handler designed to watch file system. When log file is moved or
|
||||
# removed this handler will open a new log file with specified path
|
||||
# instantaneously. It makes sense only if log_file option is specified and
|
||||
# Linux platform is used. This option is ignored if log_config_append is set.
|
||||
# (boolean value)
|
||||
#watch_log_file = false
|
||||
|
||||
# Use syslog for logging. Existing syslog format is DEPRECATED and will be
|
||||
# changed later to honor RFC5424. This option is ignored if log_config_append
|
||||
# is set. (boolean value)
|
||||
#use_syslog = false
|
||||
|
||||
# Enables or disables syslog rfc5424 format for logging. If enabled, prefixes
|
||||
# the MSG part of the syslog message with APP-NAME (RFC5424). This option is
|
||||
# ignored if log_config_append is set. (boolean value)
|
||||
# This option is deprecated for removal.
|
||||
# Its value may be silently ignored in the future.
|
||||
# Reason: The format without the APP-NAME is deprecated in Kilo, and will be
|
||||
# removed in Mitaka, along with this option.
|
||||
#use_syslog_rfc_format = true
|
||||
|
||||
# Syslog facility to receive log lines. This option is ignored if
|
||||
# log_config_append is set. (string value)
|
||||
#syslog_log_facility = LOG_USER
|
||||
|
||||
# Log output to standard error. This option is ignored if log_config_append is
|
||||
# set. (boolean value)
|
||||
#use_stderr = true
|
||||
|
||||
# Format string to use for log messages with context. (string value)
|
||||
#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
|
||||
|
||||
# Format string to use for log messages when context is undefined. (string
|
||||
# value)
|
||||
#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
|
||||
|
||||
# Additional data to append to log message when logging level for the message
|
||||
# is DEBUG. (string value)
|
||||
#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d
|
||||
|
||||
# Prefix each line of exception output with this format. (string value)
|
||||
#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s
|
||||
|
||||
# Defines the format string for %(user_identity)s that is used in
|
||||
# logging_context_format_string. (string value)
|
||||
#logging_user_identity_format = %(user)s %(tenant)s %(domain)s %(user_domain)s %(project_domain)s
|
||||
|
||||
# List of package logging levels in logger=LEVEL pairs. This option is ignored
|
||||
# if log_config_append is set. (list value)
|
||||
#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,dogpile.core.dogpile=INFO
|
||||
|
||||
# Enables or disables publication of error events. (boolean value)
|
||||
#publish_errors = false
|
||||
|
||||
# The format for an instance that is passed with the log message. (string
|
||||
# value)
|
||||
#instance_format = "[instance: %(uuid)s] "
|
||||
|
||||
# The format for an instance UUID that is passed with the log message. (string
|
||||
# value)
|
||||
#instance_uuid_format = "[instance: %(uuid)s] "
|
||||
|
||||
# Enables or disables fatal status of deprecations. (boolean value)
|
||||
#fatal_deprecations = false
|
||||
|
||||
|
||||
[api]
|
||||
|
||||
#
|
||||
# From vitrage
|
||||
#
|
||||
|
||||
# The port for the vitrage API server. (port value)
|
||||
# Minimum value: 0
|
||||
# Maximum value: 65535
|
||||
#port = 8999
|
||||
|
||||
# The listen IP for the vitrage API server. (string value)
|
||||
#host = 0.0.0.0
|
||||
|
||||
# Configuration file for WSGI definition of API. (string value)
|
||||
#paste_config = api-paste.ini
|
||||
|
||||
# Number of workers for vitrage API server. (integer value)
|
||||
# Minimum value: 1
|
||||
#workers = 1
|
||||
|
||||
# Toggle Pecan Debug Middleware. (boolean value)
|
||||
#pecan_debug = false
|
||||
|
||||
|
||||
[consistency]
|
||||
|
||||
#
|
||||
# From vitrage
|
||||
#
|
||||
|
||||
# interval between consistency checks (in seconds) (integer value)
|
||||
# Minimum value: 180
|
||||
#consistency_interval = 600
|
||||
|
||||
# minimum time until deleting entity (in seconds) (integer value)
|
||||
# Minimum value: 60
|
||||
#min_time_to_delete = 60
|
||||
|
||||
|
||||
[cors]
|
||||
|
||||
#
|
||||
# From oslo.middleware
|
||||
#
|
||||
|
||||
# Indicate whether this resource may be shared with the domain received in the
|
||||
# requests "origin" header. (list value)
|
||||
#allowed_origin = <None>
|
||||
|
||||
# Indicate that the actual request can include user credentials (boolean value)
|
||||
#allow_credentials = true
|
||||
|
||||
# Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
|
||||
# Headers. (list value)
|
||||
#expose_headers = Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma
|
||||
|
||||
# Maximum cache age of CORS preflight requests. (integer value)
|
||||
#max_age = 3600
|
||||
|
||||
# Indicate which methods can be used during the actual request. (list value)
|
||||
#allow_methods = GET,POST,PUT,DELETE,OPTIONS
|
||||
|
||||
# Indicate which header field names may be used during the actual request.
|
||||
# (list value)
|
||||
#allow_headers = Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma
|
||||
|
||||
|
||||
[cors.subdomain]
|
||||
|
||||
#
|
||||
# From oslo.middleware
|
||||
#
|
||||
|
||||
# Indicate whether this resource may be shared with the domain received in the
|
||||
# requests "origin" header. (list value)
|
||||
#allowed_origin = <None>
|
||||
|
||||
# Indicate that the actual request can include user credentials (boolean value)
|
||||
#allow_credentials = true
|
||||
|
||||
# Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
|
||||
# Headers. (list value)
|
||||
#expose_headers = Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma
|
||||
|
||||
# Maximum cache age of CORS preflight requests. (integer value)
|
||||
#max_age = 3600
|
||||
|
||||
# Indicate which methods can be used during the actual request. (list value)
|
||||
#allow_methods = GET,POST,PUT,DELETE,OPTIONS
|
||||
|
||||
# Indicate which header field names may be used during the actual request.
|
||||
# (list value)
|
||||
#allow_headers = Content-Type,Cache-Control,Content-Language,Expires,Last-Modified,Pragma
|
||||
|
||||
|
||||
[evaluator]
|
||||
|
||||
#
|
||||
# From vitrage
|
||||
#
|
||||
|
||||
# A path for the templates used by the evaluator (string value)
|
||||
#templates_dir = /etc/vitrage/templates
|
||||
|
||||
|
||||
[keystone_authtoken]
|
||||
|
||||
#
|
||||
# From keystonemiddleware.auth_token
|
||||
#
|
||||
|
||||
# Complete public Identity API endpoint. (string value)
|
||||
#auth_uri = <None>
|
||||
|
||||
# API version of the admin Identity API endpoint. (string value)
|
||||
#auth_version = <None>
|
||||
|
||||
# Do not handle authorization requests within the middleware, but delegate the
|
||||
# authorization decision to downstream WSGI components. (boolean value)
|
||||
#delay_auth_decision = false
|
||||
|
||||
# Request timeout value for communicating with Identity API server. (integer
|
||||
# value)
|
||||
#http_connect_timeout = <None>
|
||||
|
||||
# How many times are we trying to reconnect when communicating with Identity
|
||||
# API Server. (integer value)
|
||||
#http_request_max_retries = 3
|
||||
|
||||
# Env key for the swift cache. (string value)
|
||||
#cache = <None>
|
||||
|
||||
# Required if identity server requires client certificate (string value)
|
||||
#certfile = <None>
|
||||
|
||||
# Required if identity server requires client certificate (string value)
|
||||
#keyfile = <None>
|
||||
|
||||
# A PEM encoded Certificate Authority to use when verifying HTTPs connections.
|
||||
# Defaults to system CAs. (string value)
|
||||
#cafile = <None>
|
||||
|
||||
# Verify HTTPS connections. (boolean value)
|
||||
#insecure = false
|
||||
|
||||
# The region in which the identity server can be found. (string value)
|
||||
#region_name = <None>
|
||||
|
||||
# Directory used to cache files related to PKI tokens. (string value)
|
||||
#signing_dir = <None>
|
||||
|
||||
# Optionally specify a list of memcached server(s) to use for caching. If left
|
||||
# undefined, tokens will instead be cached in-process. (list value)
|
||||
# Deprecated group/name - [DEFAULT]/memcache_servers
|
||||
#memcached_servers = <None>
|
||||
|
||||
# In order to prevent excessive effort spent validating tokens, the middleware
|
||||
# caches previously-seen tokens for a configurable duration (in seconds). Set
|
||||
# to -1 to disable caching completely. (integer value)
|
||||
#token_cache_time = 300
|
||||
|
||||
# Determines the frequency at which the list of revoked tokens is retrieved
|
||||
# from the Identity service (in seconds). A high number of revocation events
|
||||
# combined with a low cache duration may significantly reduce performance.
|
||||
# (integer value)
|
||||
#revocation_cache_time = 10
|
||||
|
||||
# (Optional) If defined, indicate whether token data should be authenticated or
|
||||
# authenticated and encrypted. If MAC, token data is authenticated (with HMAC)
|
||||
# in the cache. If ENCRYPT, token data is encrypted and authenticated in the
|
||||
# cache. If the value is not one of these options or empty, auth_token will
|
||||
# raise an exception on initialization. (string value)
|
||||
# Allowed values: None, MAC, ENCRYPT
|
||||
#memcache_security_strategy = None
|
||||
|
||||
# (Optional, mandatory if memcache_security_strategy is defined) This string is
|
||||
# used for key derivation. (string value)
|
||||
#memcache_secret_key = <None>
|
||||
|
||||
# (Optional) Number of seconds memcached server is considered dead before it is
|
||||
# tried again. (integer value)
|
||||
#memcache_pool_dead_retry = 300
|
||||
|
||||
# (Optional) Maximum total number of open connections to every memcached
|
||||
# server. (integer value)
|
||||
#memcache_pool_maxsize = 10
|
||||
|
||||
# (Optional) Socket timeout in seconds for communicating with a memcached
|
||||
# server. (integer value)
|
||||
#memcache_pool_socket_timeout = 3
|
||||
|
||||
# (Optional) Number of seconds a connection to memcached is held unused in the
|
||||
# pool before it is closed. (integer value)
|
||||
#memcache_pool_unused_timeout = 60
|
||||
|
||||
# (Optional) Number of seconds that an operation will wait to get a memcached
|
||||
# client connection from the pool. (integer value)
|
||||
#memcache_pool_conn_get_timeout = 10
|
||||
|
||||
# (Optional) Use the advanced (eventlet safe) memcached client pool. The
|
||||
# advanced pool will only work under python 2.x. (boolean value)
|
||||
#memcache_use_advanced_pool = false
|
||||
|
||||
# (Optional) Indicate whether to set the X-Service-Catalog header. If False,
|
||||
# middleware will not ask for service catalog on token validation and will not
|
||||
# set the X-Service-Catalog header. (boolean value)
|
||||
#include_service_catalog = true
|
||||
|
||||
# Used to control the use and type of token binding. Can be set to: "disabled"
|
||||
# to not check token binding. "permissive" (default) to validate binding
|
||||
# information if the bind type is of a form known to the server and ignore it
|
||||
# if not. "strict" like "permissive" but if the bind type is unknown the token
|
||||
# will be rejected. "required" any form of token binding is needed to be
|
||||
# allowed. Finally the name of a binding method that must be present in tokens.
|
||||
# (string value)
|
||||
#enforce_token_bind = permissive
|
||||
|
||||
# If true, the revocation list will be checked for cached tokens. This requires
|
||||
# that PKI tokens are configured on the identity server. (boolean value)
|
||||
#check_revocations_for_cached = false
|
||||
|
||||
# Hash algorithms to use for hashing PKI tokens. This may be a single algorithm
|
||||
# or multiple. The algorithms are those supported by Python standard
|
||||
# hashlib.new(). The hashes will be tried in the order given, so put the
|
||||
# preferred one first for performance. The result of the first hash will be
|
||||
# stored in the cache. This will typically be set to multiple values only while
|
||||
# migrating from a less secure algorithm to a more secure one. Once all the old
|
||||
# tokens are expired this option should be set to a single value for better
|
||||
# performance. (list value)
|
||||
#hash_algorithms = md5
|
||||
|
||||
# Authentication type to load (unknown value)
|
||||
# Deprecated group/name - [DEFAULT]/auth_plugin
|
||||
#auth_type = <None>
|
||||
|
||||
# Config Section from which to load plugin specific options (unknown value)
|
||||
#auth_section = <None>
|
||||
|
||||
|
||||
[oslo_middleware]
|
||||
|
||||
#
|
||||
# From oslo.middleware
|
||||
#
|
||||
|
||||
# The maximum body size for each request, in bytes. (integer value)
|
||||
# Deprecated group/name - [DEFAULT]/osapi_max_request_body_size
|
||||
# Deprecated group/name - [DEFAULT]/max_request_body_size
|
||||
#max_request_body_size = 114688
|
||||
|
||||
# The HTTP Header that will be used to determine what the original request
|
||||
# protocol scheme was, even if it was hidden by an SSL termination proxy.
|
||||
# (string value)
|
||||
# This option is deprecated for removal.
|
||||
# Its value may be silently ignored in the future.
|
||||
#secure_proxy_ssl_header = X-Forwarded-Proto
|
||||
|
||||
|
||||
[oslo_policy]
|
||||
|
||||
#
|
||||
# From oslo.policy
|
||||
#
|
||||
|
||||
# The JSON file that defines policies. (string value)
|
||||
# Deprecated group/name - [DEFAULT]/policy_file
|
||||
#policy_file = policy.json
|
||||
|
||||
# Default rule. Enforced when a requested rule is not found. (string value)
|
||||
# Deprecated group/name - [DEFAULT]/policy_default_rule
|
||||
#policy_default_rule = default
|
||||
|
||||
# Directories where policy configuration files are stored. They can be relative
|
||||
# to any directory in the search path defined by the config_dir option, or
|
||||
# absolute paths. The file defined by policy_file must exist for these
|
||||
# directories to be searched. Missing or empty directories are ignored. (multi
|
||||
# valued)
|
||||
# Deprecated group/name - [DEFAULT]/policy_dirs
|
||||
#policy_dirs = policy.d
|
||||
|
||||
|
||||
[synchronizer]
|
||||
|
||||
#
|
||||
# From vitrage
|
||||
#
|
||||
|
||||
# interval between full snapshots (integer value)
|
||||
# Minimum value: 10
|
||||
#snapshots_interval = 600
|
||||
|
||||
|
||||
[synchronizer_plugins]
|
||||
|
||||
#
|
||||
# From vitrage
|
||||
#
|
||||
|
||||
# A path for the static plugins for the syncronizer (string value)
|
||||
#static_plugins_dir = /etc/vitrage/static_plugins
|
||||
|
||||
# Nagios user (string value)
|
||||
#nagios_user = <None>
|
||||
|
||||
# Nagios password (string value)
|
||||
#nagios_password = <None>
|
||||
|
||||
# Nagios url for querying the data. Example: http://<ip>/monitoring/nagios
|
||||
# /cgi-bin/status.cgi (string value)
|
||||
#nagios_url = <None>
|
@ -12,4 +12,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from vitrage.common.constants import EntityCategory
|
||||
from vitrage.common.constants import VertexProperties as VProps
|
||||
|
||||
mock_file = True
|
||||
RCA_QUERY = {'==': {VProps. CATEGORY: EntityCategory.ALARM}}
|
||||
|
@ -12,15 +12,15 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import json
|
||||
import pecan
|
||||
|
||||
from oslo_log import log
|
||||
from pecan import redirect
|
||||
from pecan import rest
|
||||
from six.moves import urllib
|
||||
from vitrage.api.controllers.v1 import RCA_QUERY
|
||||
from vitrage.api.policy import enforce
|
||||
from vitrage.common.constants import EntityCategory
|
||||
from vitrage.common.constants import VertexProperties as VProps
|
||||
|
||||
# noinspection PyProtectedMember
|
||||
from vitrage.i18n import _LI
|
||||
@ -35,9 +35,7 @@ class RCAController(rest.RestController):
|
||||
pecan.request.enforcer, {})
|
||||
|
||||
LOG.info(_LI('received show rca with alarm id %s') % alarm_id)
|
||||
|
||||
vals = {'category': VProps.CATEGORY, 'alarm': EntityCategory.ALARM}
|
||||
query = '{"==":{"%(category)s":"%(alarm)s"}}' % vals
|
||||
query = json.dumps(RCA_QUERY)
|
||||
LOG.info(_LI('query is %s') % query)
|
||||
params = urllib.parse.urlencode(
|
||||
dict(query=query, root=alarm_id, graph_type='graph'))
|
||||
|
@ -24,6 +24,8 @@ from pecan.core import abort
|
||||
from pecan import rest
|
||||
|
||||
from vitrage.api.controllers.v1 import mock_file
|
||||
from vitrage.api.controllers.v1 import RCA_QUERY
|
||||
|
||||
from vitrage.api.policy import enforce
|
||||
|
||||
# noinspection PyProtectedMember
|
||||
@ -40,7 +42,6 @@ def as_tree(graph, root='RESOURCE:node', reverse=False):
|
||||
|
||||
|
||||
class TopologyController(rest.RestController):
|
||||
|
||||
def __init__(self):
|
||||
transport = oslo_messaging.get_transport(cfg.CONF)
|
||||
cfg.CONF.set_override('rpc_backend', 'rabbit')
|
||||
@ -67,7 +68,7 @@ class TopologyController(rest.RestController):
|
||||
LOG.info(_LI("query is %s") % query)
|
||||
|
||||
if mock_file:
|
||||
return self.get_mock_graph(graph_type)
|
||||
return self.get_mock_graph(graph_type, query)
|
||||
else:
|
||||
return self.get_graph(graph_type, depth, query, root)
|
||||
|
||||
@ -89,11 +90,12 @@ class TopologyController(rest.RestController):
|
||||
abort(404, str(e))
|
||||
|
||||
@staticmethod
|
||||
def get_mock_graph(graph_type):
|
||||
# TODO(eyal) temporary mock
|
||||
graph_file = pecan.request.cfg.find_file('graph.sample.json')
|
||||
def get_mock_graph(graph_type, query):
|
||||
file_name = 'rca.sample.json' if query == RCA_QUERY \
|
||||
else 'graph.sample.json'
|
||||
graph_file = pecan.request.cfg.find_file(file_name)
|
||||
if graph_file is None:
|
||||
abort(404, 'file graph.sample.json not found')
|
||||
abort(404, 'file %s not found' % file_name)
|
||||
try:
|
||||
with open(graph_file) as data_file:
|
||||
graph = json.load(data_file)
|
||||
|
Loading…
Reference in New Issue
Block a user