<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Arial;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:"Courier New";
panose-1:2 7 3 9 2 2 5 2 4 4;}
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:"Calibri Light";
panose-1:2 15 3 2 2 2 4 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"맑은 고딕";}
@font-face
{font-family:굴림;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
h1
{mso-style-priority:9;
mso-style-link:"Heading 1 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";
font-weight:normal;}
h2
{mso-style-priority:9;
mso-style-link:"Heading 2 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";
font-weight:normal;}
h3
{mso-style-priority:9;
mso-style-link:"Heading 3 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";
font-weight:normal;}
h4
{mso-style-priority:9;
mso-style-link:"Heading 4 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";
font-weight:normal;}
h5
{mso-style-priority:9;
mso-style-link:"Heading 5 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";
font-weight:normal;}
h6
{mso-style-priority:9;
mso-style-link:"Heading 6 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";
font-weight:normal;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
{mso-style-priority:9;
mso-style-link:"Heading 7 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
{mso-style-priority:9;
mso-style-link:"Heading 8 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
{mso-style-priority:9;
mso-style-link:"Heading 9 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
p.MsoCaption, li.MsoCaption, div.MsoCaption
{mso-style-priority:35;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:9.0pt;
font-family:"맑은 고딕";
color:#4472C4;
font-weight:bold;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
{mso-style-priority:10;
mso-style-link:"Title Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle
{mso-style-priority:11;
mso-style-link:"Subtitle Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
{mso-style-priority:1;
mso-style-link:"No Spacing Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:40.0pt;
margin-bottom:.0001pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:0cm;
mso-para-margin-left:4.0gd;
mso-para-margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
p.MsoQuote, li.MsoQuote, div.MsoQuote
{mso-style-priority:29;
mso-style-link:"Quote Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
p.MsoIntenseQuote, li.MsoIntenseQuote, div.MsoIntenseQuote
{mso-style-priority:30;
mso-style-link:"Intense Quote Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.MsoSubtleEmphasis
{mso-style-priority:19;
color:gray;
font-style:italic;}
span.MsoIntenseEmphasis
{mso-style-priority:21;
color:#4472C4;
font-weight:bold;
font-style:italic;}
span.MsoSubtleReference
{mso-style-priority:31;
font-variant:small-caps;
color:#ED7D31;
text-decoration:underline;}
span.MsoIntenseReference
{mso-style-priority:32;
font-variant:small-caps;
color:#ED7D31;
letter-spacing:.25pt;
font-weight:bold;
text-decoration:underline;}
span.MsoBookTitle
{mso-style-priority:33;
font-variant:small-caps;
letter-spacing:.25pt;
font-weight:bold;}
p.MsoTocHeading, li.MsoTocHeading, div.MsoTocHeading
{mso-style-priority:39;
margin-top:24.0pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:0cm;
margin-bottom:.0001pt;
text-align:justify;
page-break-after:avoid;
text-autospace:none;
word-break:break-all;
font-size:14.0pt;
font-family:"Calibri Light";
color:#2F5496;
font-weight:bold;}
span.Heading1Char
{mso-style-name:"Heading 1 Char";
mso-style-priority:9;
mso-style-link:"Heading 1";
font-family:"Calibri Light";
color:#2F5496;
font-weight:bold;}
span.Heading2Char
{mso-style-name:"Heading 2 Char";
mso-style-priority:9;
mso-style-link:"Heading 2";
font-family:"Calibri Light";
color:#4472C4;
font-weight:bold;}
span.Heading3Char
{mso-style-name:"Heading 3 Char";
mso-style-priority:9;
mso-style-link:"Heading 3";
font-family:"Calibri Light";
color:#4472C4;
font-weight:bold;}
span.Heading4Char
{mso-style-name:"Heading 4 Char";
mso-style-priority:9;
mso-style-link:"Heading 4";
font-family:"Calibri Light";
color:#4472C4;
font-weight:bold;
font-style:italic;}
span.Heading5Char
{mso-style-name:"Heading 5 Char";
mso-style-priority:9;
mso-style-link:"Heading 5";
font-family:"Calibri Light";
color:#1F3763;}
span.Heading6Char
{mso-style-name:"Heading 6 Char";
mso-style-priority:9;
mso-style-link:"Heading 6";
font-family:"Calibri Light";
color:#1F3763;
font-style:italic;}
span.Heading7Char
{mso-style-name:"Heading 7 Char";
mso-style-priority:9;
mso-style-link:"Heading 7";
font-family:"Calibri Light";
color:#404040;
font-style:italic;}
span.Heading8Char
{mso-style-name:"Heading 8 Char";
mso-style-priority:9;
mso-style-link:"Heading 8";
font-family:"Calibri Light";
color:#4472C4;}
span.Heading9Char
{mso-style-name:"Heading 9 Char";
mso-style-priority:9;
mso-style-link:"Heading 9";
font-family:"Calibri Light";
color:#404040;
font-style:italic;}
span.TitleChar
{mso-style-name:"Title Char";
mso-style-priority:10;
mso-style-link:Title;
font-family:"Calibri Light";
color:#323E4F;
letter-spacing:.25pt;}
span.SubtitleChar
{mso-style-name:"Subtitle Char";
mso-style-priority:11;
mso-style-link:Subtitle;
font-family:"Calibri Light";
color:#4472C4;
letter-spacing:.75pt;
font-style:italic;}
span.NoSpacingChar
{mso-style-name:"No Spacing Char";
mso-style-priority:1;
mso-style-link:"No Spacing";}
span.QuoteChar
{mso-style-name:"Quote Char";
mso-style-priority:29;
mso-style-link:Quote;
color:black;
font-style:italic;}
span.IntenseQuoteChar
{mso-style-name:"Intense Quote Char";
mso-style-priority:30;
mso-style-link:"Intense Quote";
color:#4472C4;
font-weight:bold;
font-style:italic;}
p.1, li.1, div.1
{mso-style-name:"제목 1";
mso-style-link:"제목 1 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.1Char
{mso-style-name:"제목 1 Char";
mso-style-priority:9;
mso-style-link:"제목 1";
font-family:"맑은 고딕";}
p.2, li.2, div.2
{mso-style-name:"제목 2";
mso-style-link:"제목 2 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.2Char
{mso-style-name:"제목 2 Char";
mso-style-priority:9;
mso-style-link:"제목 2";
font-family:"맑은 고딕";}
p.3, li.3, div.3
{mso-style-name:"제목 3";
mso-style-link:"제목 3 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.3Char
{mso-style-name:"제목 3 Char";
mso-style-priority:9;
mso-style-link:"제목 3";
font-family:"맑은 고딕";}
p.4, li.4, div.4
{mso-style-name:"제목 4";
mso-style-link:"제목 4 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.4Char
{mso-style-name:"제목 4 Char";
mso-style-priority:9;
mso-style-link:"제목 4";
font-family:"맑은 고딕";
font-weight:bold;}
p.5, li.5, div.5
{mso-style-name:"제목 5";
mso-style-link:"제목 5 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.5Char
{mso-style-name:"제목 5 Char";
mso-style-priority:9;
mso-style-link:"제목 5";
font-family:"맑은 고딕";}
p.6, li.6, div.6
{mso-style-name:"제목 6";
mso-style-link:"제목 6 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.6Char
{mso-style-name:"제목 6 Char";
mso-style-priority:9;
mso-style-link:"제목 6";
font-family:"맑은 고딕";
font-weight:bold;}
p.7, li.7, div.7
{mso-style-name:"제목 7";
mso-style-link:"제목 7 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.7Char
{mso-style-name:"제목 7 Char";
mso-style-priority:9;
mso-style-link:"제목 7";
font-family:"맑은 고딕";}
p.8, li.8, div.8
{mso-style-name:"제목 8";
mso-style-link:"제목 8 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.8Char
{mso-style-name:"제목 8 Char";
mso-style-priority:9;
mso-style-link:"제목 8";
font-family:"맑은 고딕";}
p.9, li.9, div.9
{mso-style-name:"제목 9";
mso-style-link:"제목 9 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.9Char
{mso-style-name:"제목 9 Char";
mso-style-priority:9;
mso-style-link:"제목 9";
font-family:"맑은 고딕";}
p.a, li.a, div.a
{mso-style-name:제목;
mso-style-link:"제목 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.Char
{mso-style-name:"제목 Char";
mso-style-priority:10;
mso-style-link:제목;
font-family:"맑은 고딕";
font-weight:bold;}
p.a0, li.a0, div.a0
{mso-style-name:부제;
mso-style-link:"부제 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.Char0
{mso-style-name:"부제 Char";
mso-style-priority:11;
mso-style-link:부제;
font-family:"맑은 고딕";}
p.a1, li.a1, div.a1
{mso-style-name:인용;
mso-style-link:"인용 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.Char1
{mso-style-name:"인용 Char";
mso-style-priority:29;
mso-style-link:인용;
font-family:"맑은 고딕";
color:#404040;
font-style:italic;}
p.a2, li.a2, div.a2
{mso-style-name:"강한 인용";
mso-style-link:"강한 인용 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-autospace:none;
word-break:break-all;
font-size:10.0pt;
font-family:"맑은 고딕";}
span.Char2
{mso-style-name:"강한 인용 Char";
mso-style-priority:30;
mso-style-link:"강한 인용";
font-family:"맑은 고딕";
color:#5B9BD5;
font-style:italic;}
span.EmailStyle72
{mso-style-type:personal;
font-family:"맑은 고딕";
color:windowtext;}
span.shorttext
{mso-style-name:short_text;}
span.EmailStyle74
{mso-style-type:personal;
font-family:Calibri;
color:windowtext;}
span.EmailStyle75
{mso-style-type:personal;
font-family:"맑은 고딕";
color:#1F497D;}
span.EmailStyle76
{mso-style-type:personal;
font-family:Calibri;
color:#1F497D;}
span.EmailStyle77
{mso-style-type:personal;
font-family:Calibri;
color:windowtext;}
span.EmailStyle78
{mso-style-type:personal;
font-family:Calibri;
color:#1F497D;}
span.EmailStyle79
{mso-style-type:personal;
font-family:Calibri;
color:windowtext;}
span.EmailStyle80
{mso-style-type:personal;
font-family:"맑은 고딕";
color:#1F497D;}
span.EmailStyle81
{mso-style-type:personal;
font-family:Calibri;
color:windowtext;}
span.EmailStyle82
{mso-style-type:personal;
font-family:"맑은 고딕";
color:#1F497D;}
span.EmailStyle83
{mso-style-type:personal-reply;
font-family:Calibri;
color:windowtext;}
span.msoIns
{mso-style-type:export-only;
mso-style-name:"";
text-decoration:underline;
color:teal;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:3.0cm 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:456725474;
mso-list-type:hybrid;
mso-list-template-ids:-953003336 -1986376686 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{mso-level-start-at:511;
mso-level-number-format:bullet;
mso-level-text:"&\#8226";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:"맑은 고딕";
mso-bidi-font-family:"Times New Roman";}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:40.0pt;
text-indent:-20.0pt;
font-family:Wingdings;}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:60.0pt;
text-indent:-20.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:80.0pt;
text-indent:-20.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:100.0pt;
text-indent:-20.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:120.0pt;
text-indent:-20.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:140.0pt;
text-indent:-20.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:160.0pt;
text-indent:-20.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:180.0pt;
text-indent:-20.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:580335030;
mso-list-type:hybrid;
mso-list-template-ids:1751258890 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:759985721;
mso-list-type:hybrid;
mso-list-template-ids:34878022 930880462 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l2:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:38.0pt;
text-indent:-18.0pt;}
@list l2:level2
{mso-level-number-format:alpha-upper;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:60.0pt;
text-indent:-20.0pt;}
@list l2:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:80.0pt;
text-indent:-20.0pt;}
@list l2:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:100.0pt;
text-indent:-20.0pt;}
@list l2:level5
{mso-level-number-format:alpha-upper;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:120.0pt;
text-indent:-20.0pt;}
@list l2:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:140.0pt;
text-indent:-20.0pt;}
@list l2:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:160.0pt;
text-indent:-20.0pt;}
@list l2:level8
{mso-level-number-format:alpha-upper;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:180.0pt;
text-indent:-20.0pt;}
@list l2:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:200.0pt;
text-indent:-20.0pt;}
@list l3
{mso-list-id:907499041;
mso-list-type:hybrid;
mso-list-template-ids:116035842 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l3:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l3:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l3:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l3:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l3:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l3:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Hi Minwook,<o:p></o:p></span></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Thanks for the explanation, I understand the reasons for not running these checks on a regular basis in Zabbix or other monitoring tools. It makes sense. However,
I don’t want to re-invent the wheel and add to Vitrage functionality that already exists in other projects.
<o:p></o:p></span></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">How about using Mistral for the purpose of manually running these extra checks? If you prepare the script/agent in advance, as well as the Mistral workflow, I
believe that Mistral can successfully execute the check and return the results. I’m not so sure about the UI part, we will have to figure out how and where the user can see the output. But it will save a lot of effort around managing the checks, running a
new service, supporting a new API, etc.<o:p></o:p></span></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">What do you think?<o:p></o:p></span></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Ifat<o:p></o:p></span></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-family:Calibri;color:black">From: </span>
</b><span style="font-family:Calibri;color:black">MinWookKim <delightwook@ssu.ac.kr><br>
<b>Reply-To: </b>"OpenStack Development Mailing List (not for usage questions)" <openstack-dev@lists.openstack.org><br>
<b>Date: </b>Tuesday, 3 April 2018 at 5:36<br>
<b>To: </b>"'OpenStack Development Mailing List (not for usage questions)'" <openstack-dev@lists.openstack.org><br>
<b>Subject: </b>Re: [openstack-dev] [Vitrage] New proposal for analysis.</span><span style="font-size:12.0pt;font-family:Calibri;color:black"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Times New Roman""><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Hello Ifat,
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">I also thought about several scenarios that use monitoring tools like Zabbix, Nagios, and Prometheus.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">But there are some limitations, so
</span><span class="shorttext"><span lang="EN" style="font-family:Arial;color:#222222">we have to think about it.</span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">We also need to think about targets, scope, and so on.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">The reason I do not think of tools like Zabbix, Nagios, and Prometheus as a tool to run checks is because we need to configure an agent or an exporter.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">I think it is not hard to configure an agent for monitoring objects such as a physical host.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">But the scope of the idea I think involves the VM's interior.
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Therefore, configuring the agent automatically inside the VM may not be easy. (although we can use parameters like user-data)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">If we exclude VM internal checks from scope, we can simply perform a check via Zabbix. (Like Zabbix's remote command, history)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">On the other hand, if we include the inside of a VM in a scope, and configure each of them, we have a rather constant overhead.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">The check service may incur temporary overhead, but the agent configuration can cause constant overhead.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">And Zabbix history can be another task for Vitrage.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">If we configure the agents themselves and exclude the VM's internal checks, we can provide functionality with simple code.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">how is it?</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Thank you.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Best regards,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Minwook.</span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" align="left" style="text-align:left;text-autospace:ideograph-other;word-break:normal">
<b><span style="font-size:11.0pt;font-family:Calibri">From:</span></b><span style="font-size:11.0pt;font-family:Calibri"> Afek, Ifat (Nokia - IL/Kfar Sava) [mailto:ifat.afek@nokia.com]
<br>
<b>Sent:</b> Monday, April 2, 2018 10:22 PM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [Vitrage] New proposal for analysis.</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" align="left" style="text-align:left"> <o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Hi Minwook,</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Thinking about it again, writing a new service for these checks might be an unnecessary overhead. Have you considered using an existing tool, like Zabbix, for
running such checks? If you use Zabbix, you can define new triggers that run the new checks, and whenever needed the user can ask to open Zabbix and show the relevant metrics. The format will not be exactly the same as in your example, but it will save a lot
of work and spare you the need to write and manage a new service. </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Some technical details:
</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:36.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l3 level1 lfo2;word-break:normal">
<![if !supportLists]><span style="font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri">The current information that Vitrage stores is not enough for opening the right Zabbix page. We will need to keep a little more data, like the item id,
on the alarm vertex. But can be done easily. </span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:36.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l3 level1 lfo2;word-break:normal">
<![if !supportLists]><span style="font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri">A relevant Zabbix API is history.get [1]</span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:36.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l3 level1 lfo2;word-break:normal">
<![if !supportLists]><span style="font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri">If you are not using Zabbix, I assume that other monitoring tools have similar capabilities</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">What do you think? Do you think it can work with your scenario?</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Or do you see a benefit to the user is viewing the data in the format that you suggested?</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">[1]
</span><a href="https://www.zabbix.com/documentation/3.0/manual/api/reference/history/get"><span style="font-size:11.0pt;font-family:Calibri">https://www.zabbix.com/documentation/3.0/manual/api/reference/history/get</span></a><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Thanks,</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Ifat</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-family:Calibri;color:black">From: </span>
</b><span style="font-family:Calibri;color:black">MinWookKim <</span><a href="mailto:delightwook@ssu.ac.kr"><span style="font-family:Calibri">delightwook@ssu.ac.kr</span></a><span style="font-family:Calibri;color:black">><br>
<b>Reply-To: </b>"OpenStack Development Mailing List (not for usage questions)" <</span><a href="mailto:openstack-dev@lists.openstack.org"><span style="font-family:Calibri">openstack-dev@lists.openstack.org</span></a><span style="font-family:Calibri;color:black">><br>
<b>Date: </b>Monday, 2 April 2018 at 4:51<br>
<b>To: </b>"'OpenStack Development Mailing List (not for usage questions)'" <</span><a href="mailto:openstack-dev@lists.openstack.org"><span style="font-family:Calibri">openstack-dev@lists.openstack.org</span></a><span style="font-family:Calibri;color:black">><br>
<b>Subject: </b>Re: [openstack-dev] [Vitrage] New proposal for analysis.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Times New Roman""> </span><o:p></o:p></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Hello Ifat,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Thank you for the reply. :)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">It is my opinion only, so if I'm wrong, we can change the implementation part at any time. (Even if it differs from my initial intention)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">The
<u>same security issues arise</u> as you say. But now Vitrage does not call external APIs.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">The Vitrage-dashboard uses Vitrageclient libraries for Topology, Alarms, and RCA requests to Vitrage.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">So if we add an API, it will have the following flow.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:#9DC3E6">Vitrage-dashboard requests checks using the Vitrageclient library. -> Vitrage receives the API.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:#9DC3E6"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:#9DC3E6">-> api / controllers / v1 / checks.py is called. -> checks service is called.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">In accordance with the above flow, passing through the Vitrage API is the purpose of data passing and function calls.
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">I think Vitrage does not need to call external APIs.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">If you do not want to go through the Vitrage API, we need to create a function for the check action in the Vitrage-dashboard, and write code to call the function.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">If I think wrong, please tell me anytime. :)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Thank you.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Best regards,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Minwook.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" align="left" style="text-align:left;text-autospace:ideograph-other;word-break:normal">
<b><span style="font-size:11.0pt;font-family:Calibri">From:</span></b><span style="font-size:11.0pt;font-family:Calibri"> Afek, Ifat (Nokia - IL/Kfar Sava) [</span><a href="mailto:ifat.afek@nokia.com"><span style="font-size:11.0pt;font-family:Calibri">mailto:ifat.afek@nokia.com</span></a><span style="font-size:11.0pt;font-family:Calibri">]
<br>
<b>Sent:</b> Sunday, April 1, 2018 3:40 AM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [Vitrage] New proposal for analysis.</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" align="left" style="text-align:left"> <o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Hi Minwook,</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">I understand your concern about the security issue.
</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">But how would that be different if the API call is passed through Vitrage API? The authentication from vitrage-dashboard to vitrage API will work, but then Vitrage
will call an external API and you’ll have the same security issue, right? I don’t understand what is the difference between calling the external component from vitrage-dashboard and calling it from vitrage.</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Best regards,</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Ifat.</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-family:Calibri;color:black">From: </span>
</b><span style="font-family:Calibri;color:black">MinWookKim <</span><a href="mailto:delightwook@ssu.ac.kr"><span style="font-family:Calibri">delightwook@ssu.ac.kr</span></a><span style="font-family:Calibri;color:black">><br>
<b>Reply-To: </b>"OpenStack Development Mailing List (not for usage questions)" <</span><a href="mailto:openstack-dev@lists.openstack.org"><span style="font-family:Calibri">openstack-dev@lists.openstack.org</span></a><span style="font-family:Calibri;color:black">><br>
<b>Date: </b>Thursday, 29 March 2018 at 14:51<br>
<b>To: </b>"'OpenStack Development Mailing List (not for usage questions)'" <</span><a href="mailto:openstack-dev@lists.openstack.org"><span style="font-family:Calibri">openstack-dev@lists.openstack.org</span></a><span style="font-family:Calibri;color:black">><br>
<b>Subject: </b>Re: [openstack-dev] [Vitrage] New proposal for analysis.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Times New Roman""> </span><o:p></o:p></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Hello Ifat,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:black">Thanks for your reply. : )</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:black">I wrote my opinion on your comment.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:red">Why do you think the request should pass through the Vitrage API? Why can’t vitrage-dashboard call the check component directly?</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:Calibri;color:black">Authentication issues:</span></b><o:p></o:p></p>
<p class="MsoNormal"><span class="shorttext"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:black">I think the check component is a separate component based on the API.</span></span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">In my opinion, if the check component has a separate api address from the vitrage to receive requests from the Vitrage-dashboard,
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">the Vitrage-dashboard needs to know the api address for the check component.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">This can result in a request / response situation open to anyone, regardless of the authentication supported
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">by openstack between the Vitrage-dashboard and the request / response procedure of check component.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">This is possible not only through the Vitrage-dashboard, but also with simple commands such as curl.
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">(I think it is unnecessary to implement a separate authentication system for the check component.)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">This problem may occur if someone knows the api address for the check component,
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">which can cause the host and VM to execute system commands.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:red"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:red">what should happen if the user closes the check window before the checks are over? I assume that the checks will finish, but the user won’t be able to see the results?</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">If the window is closed before the check is finished, the user can not check the result.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">To solve this problem, I think that temporarily saving a list of recent results is also a solution.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">By storing temporary lists (for example, up to 10), the user can see the previous results and think that it is also possible to empty the list by the user.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">how is it?</span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:9.0pt;font-family:굴림;color:black"> </span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Thank you.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Best Regrads,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Minwook.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:Calibri;color:#1F497D"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" align="left" style="text-align:left;text-autospace:ideograph-other;word-break:normal">
<b><span style="font-size:11.0pt;font-family:Calibri">From:</span></b><span style="font-size:11.0pt;font-family:Calibri"> Afek, Ifat (Nokia - IL/Kfar Sava) [</span><a href="mailto:ifat.afek@nokia.com"><span style="font-size:11.0pt;font-family:Calibri">mailto:ifat.afek@nokia.com</span></a><span style="font-size:11.0pt;font-family:Calibri">]
<br>
<b>Sent:</b> Thursday, March 29, 2018 8:07 PM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [Vitrage] New proposal for analysis.</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" align="left" style="text-align:left"> <o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Hi Minwook,</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Why do you think the request should pass through the Vitrage API? Why can’t vitrage-dashboard call the check component directly?</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">And another question: what should happen if the user closes the check window before the checks are over? I assume that the checks will finish, but the user won’t
be able to see the results?</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Thanks,</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Ifat.</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-family:Calibri;color:black">From: </span>
</b><span style="font-family:Calibri;color:black">MinWookKim <</span><a href="mailto:delightwook@ssu.ac.kr"><span style="font-family:Calibri">delightwook@ssu.ac.kr</span></a><span style="font-family:Calibri;color:black">><br>
<b>Reply-To: </b>"OpenStack Development Mailing List (not for usage questions)" <</span><a href="mailto:openstack-dev@lists.openstack.org"><span style="font-family:Calibri">openstack-dev@lists.openstack.org</span></a><span style="font-family:Calibri;color:black">><br>
<b>Date: </b>Thursday, 29 March 2018 at 10:25<br>
<b>To: </b>"'OpenStack Development Mailing List (not for usage questions)'" <</span><a href="mailto:openstack-dev@lists.openstack.org"><span style="font-family:Calibri">openstack-dev@lists.openstack.org</span></a><span style="font-family:Calibri;color:black">><br>
<b>Subject: </b>Re: [openstack-dev] [Vitrage] New proposal for analysis.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Times New Roman""> </span><o:p></o:p></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Hello Ifat and Vitrage team.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">I would like to explain more about the implementation part of the mail I sent last time.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">The flow is as follows.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:Calibri;color:black">Vitrage-dashboard (action-list-panel) -> Vitrage-api -> check component</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">The last time I mentioned it as api-handler, it would be better to call the check component directly from Vitarge-api without having to use it.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">I hope this helps you understand.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Thank you</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Best Regards,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Minwook.<b>
</b></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:Calibri;color:#1F497D"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" align="left" style="text-align:left;text-autospace:ideograph-other;word-break:normal">
<b><span style="font-size:11.0pt;font-family:Calibri">From:</span></b><span style="font-size:11.0pt;font-family:Calibri"> MinWookKim [</span><a href="mailto:delightwook@ssu.ac.kr"><span style="font-size:11.0pt;font-family:Calibri">mailto:delightwook@ssu.ac.kr</span></a><span style="font-size:11.0pt;font-family:Calibri">]
<br>
<b>Sent:</b> Wednesday, March 28, 2018 11:21 AM<br>
<b>To:</b> 'OpenStack Development Mailing List (not for usage questions)'<br>
<b>Subject:</b> Re: [openstack-dev] [Vitrage] New proposal for analysis.</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" align="left" style="text-align:left"> <o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black">Hello Ifat,
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:black"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:black">Thanks for your reply. : )</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">This proposal is a proposal that we expect to be useful from a user perspective.<br>
<br>
From a manager's point of view, we need an implementation that </span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#00B0F0">minimizes the overhead
</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">incurred by the proposal.<br>
<br>
The answers to some of your questions are:</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:red"> </span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l0 level1 lfo4">
<![if !supportLists]><span style="mso-list:Ignore">•<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri;color:red">I assume that these checks will not be implemented in Vitrage, and the results will not be stored in Vitrage, right? Vitrage role is to be a place where
it is easy and intuitive for the user to execute external actions/checks.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri;color:red"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Yes, that's right.
</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#00B0F0">We do not need to save</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> it to Vitrage because we just need to check the results.
</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">However, it is possible to implement the function directly in Vitrage-dashboard separately from Vitrage like
add-action-list panel, </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">but it seems that it is
</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#00B0F0">not enough to implement all the functions</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">.
</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><u><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">If you do not mind, we will have the following flow</span></u><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:40.0pt;mso-para-margin-left:4.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"><br>
1. The user requests the check action from the vitrage-dashboard (add-action-list-panel).<br>
2. Call the check component through the vitrage's API handler.<br>
3. The check component executes the command and returns the result.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:40.0pt;mso-para-margin-left:4.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Because it is my opinion only, please tell us if there is an unnecessary part. :)</span><o:p></o:p></p>
<p class="MsoNormal" style="text-indent:22.0pt"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l0 level1 lfo4">
<![if !supportLists]><span style="mso-list:Ignore">•<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri;color:red">Do you expect the user to click an entity, select an action to run (e.g. ‘P2P check’), and wait by the open panel for the results? What if the user switches
to another menu before the check is done? What if the user asks to run an additional check in parallel? What if the user wants to see again a previous result?</span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;mso-para-margin-left:0gd"><span style="font-size:11.0pt;font-family:Calibri;color:red"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">My idea was to select the task, wait for the results in an open panel, and then instantly see it in the panel.
</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">If we switch to another menu before the scan is complete, we will
</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#00B0F0">not be able to see the results</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">.<br>
Parallel checking is a matter of fact. (This can cause excessive overhead.)<br>
For earlier results, it may be okay to </span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#00B0F0">temporarily save
</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">the open panel until we exit the panel. We
</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#00B0F0">can see the previous results</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> through the temporary saved results.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l0 level1 lfo4">
<![if !supportLists]><span style="mso-list:Ignore">•<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]><span dir="LTR"></span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:red">Any thoughts of what component will implement those checks? Or maybe these will be just scripts?</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span class="shorttext"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">I think I implement a separate component to request it.</span></span><o:p></o:p></p>
<p class="MsoNormal"><span class="shorttext"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span></span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l0 level1 lfo4">
<![if !supportLists]><span style="mso-list:Ignore">•<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri;color:red">It could be nice if, as a result of an action check, a new alarm will be raised in Vitrage. A specific alarm with the additional details that were found.
However, it might not be trivial to implement it. We could think about it as phase #2.</span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:18.0pt;mso-para-margin-left:0gd"><span style="font-size:11.0pt;font-family:Calibri;color:red"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">It is expected to be really good. It would be very useful if an Entity-Graph generates an alarm based on the
check result.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">I think that part will be
</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#00B0F0">able to talk in detail later</span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">My answer is my opinions and assumptions.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:20.0pt;mso-para-margin-left:2.0gd"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">If you think my implementation is wrong, or an inefficient implementation, please do not hesitate to tell me.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Thanks.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Best Regards,</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Minwook.
</span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" align="left" style="text-align:left;text-autospace:ideograph-other;word-break:normal">
<b><span style="font-size:11.0pt;font-family:Calibri">From:</span></b><span style="font-size:11.0pt;font-family:Calibri"> Afek, Ifat (Nokia - IL/Kfar Sava) [</span><a href="mailto:ifat.afek@nokia.com"><span style="font-size:11.0pt;font-family:Calibri">mailto:ifat.afek@nokia.com</span></a><span style="font-size:11.0pt;font-family:Calibri">]
<br>
<b>Sent:</b> Wednesday, March 28, 2018 2:23 AM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [Vitrage] New proposal for analysis.</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" align="left" style="text-align:left"> <o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Hi Minwook,</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">I think that from a user’s perspective, these are very good ideas.</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">I have some questions regarding the UX and the implementation, since I’m trying to think what could be the best way to execute such actions from Vitrage.</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:36.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l1 level1 lfo6;word-break:normal">
<![if !supportLists]><span style="font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri">I assume that these checks will not be implemented in Vitrage, and the results will not be stored in Vitrage, right? Vitrage role is to be a place where
it is easy and intuitive for the user to execute external actions/checks.</span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:36.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l1 level1 lfo6;word-break:normal">
<![if !supportLists]><span style="font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri">Do you expect the user to click an entity, select an action to run (e.g. ‘P2P check’), and wait by the open panel for the results? What if the user switches
to another menu before the check is done? What if the user asks to run an additional check in parallel? What if the user wants to see again a previous result?</span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:36.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l1 level1 lfo6;word-break:normal">
<![if !supportLists]><span style="font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri">Any thoughts of what component will implement those checks? Or maybe these will be just scripts?
</span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:36.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l1 level1 lfo6;word-break:normal">
<![if !supportLists]><span style="font-family:Symbol"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span dir="LTR"></span><span style="font-size:11.0pt;font-family:Calibri">It could be nice if, as a result of an action check, a new alarm will be raised in Vitrage. A specific alarm with the additional details that were found.
However, it might not be trivial to implement it. We could think about it as phase #2.</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Best Regards,</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri">Ifat</span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal" style="word-break:normal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-family:Calibri;color:black">From: </span>
</b><span style="font-family:Calibri;color:black">MinWookKim <</span><a href="mailto:delightwook@ssu.ac.kr"><span style="font-family:Calibri">delightwook@ssu.ac.kr</span></a><span style="font-family:Calibri;color:black">><br>
<b>Reply-To: </b>"OpenStack Development Mailing List (not for usage questions)" <</span><a href="mailto:openstack-dev@lists.openstack.org"><span style="font-family:Calibri">openstack-dev@lists.openstack.org</span></a><span style="font-family:Calibri;color:black">><br>
<b>Date: </b>Tuesday, 27 March 2018 at 14:45<br>
<b>To: </b>"</span><a href="mailto:openstack-dev@lists.openstack.org"><span style="font-family:Calibri">openstack-dev@lists.openstack.org</span></a><span style="font-family:Calibri;color:black">" <</span><a href="mailto:openstack-dev@lists.openstack.org"><span style="font-family:Calibri">openstack-dev@lists.openstack.org</span></a><span style="font-family:Calibri;color:black">><br>
<b>Subject: </b>[openstack-dev] [Vitrage] New proposal for analysis.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Times New Roman""> </span><o:p></o:p></p>
</div>
<p class="MsoNormal"><span class="shorttext"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Hello Vitrage team.</span></span><o:p></o:p></p>
<p class="MsoNormal"><span class="shorttext"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">I am currently working on the Vitrage-Dashboard proposal for the ‘Add action list panel for entity click action’.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">(</span><a href="https://review.openstack.org/#/c/531141/"><span style="font-size:11.0pt;font-family:Calibri">https://review.openstack.org/#/c/531141/</span></a><span style="font-size:11.0pt;font-family:Calibri">)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">I would like to make a new proposal based on the action list panel mentioned above.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">The new proposal is to provide multidimensional analysis capabilities in several entities that make up the infrastructure in the entity graph.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Vitrage's entity-graph allows us to efficiently monitor alarms from various monitoring tools.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">In the current state, when there is a problem with the VM and Host, or when we want to check the status, we need to access the console individually for each VM and
Host.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal"><span class="shorttext"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">This situation causes unnecessary behavior when the number of VMs and hosts increases.</span></span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">My new suggestion is that if we have a large number of vm and host, we do not need to directly connect to each VM, host console to enter the system command.
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">Instead, we can send a system command to VM and hosts in the cloud through this proposal. It is only checking results.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri">I have written some use-cases for an efficient explanation of the function.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal"><span class="shorttext"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">From an implementation perspective,
<u>the goals of the proposal are</u>:</span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoListParagraph" style="margin-left:38.0pt;mso-para-margin-left:0gd;text-indent:-18.0pt;mso-list:l2 level1 lfo8">
<![if !supportLists]><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">
</span></span><![endif]><span dir="LTR"></span><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">To execute commands without installing any Agent / Client that can cause load on VM, Host.<br>
<br>
2. I want to provide a simple UI so that users or administrators can get the desired information to multiple VMs and hosts.<br>
<br>
3. I want to be able to grasp the results at a glance.<br>
<br>
4. I want to implement a component that can support many additional scenarios in plug-in format.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:Calibri"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">I would be happy if you could comment on the proposal or ask questions.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Thanks.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Best Regards,</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN" style="font-size:11.0pt;font-family:Calibri;color:#222222">Minwook.
</span><o:p></o:p></p>
</div>
</body>
</html>