{{cluster.name}}
- {{cluster.description}} -
Status: {{cluster.status}}
-
- diff --git a/.gitignore b/.gitignore index e422c17..c5f6f93 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ *.pyc .idea ProcfileHonchoLocal +venv +tags # Vim stuff .swp diff --git a/config-validator-ui-concept/index.html b/config-validator-ui-concept/index.html index 9ec6160..609c7c3 100644 --- a/config-validator-ui-concept/index.html +++ b/config-validator-ui-concept/index.html @@ -1,5 +1,5 @@ - +
@@ -15,11 +15,9 @@ - - @@ -39,162 +37,16 @@ + -{{cluster.description}} -
"auth_strategy"
equal to "keystone"
@X
"keystone_authtoken.auth_host"
in "$X"
"auth_strategy"
equal to "keystone"
@X
"keystone_authtoken.auth_host"
in "$X"
=h&&(r.resolve(n),l(q.$$intervalId),delete e[q.$$intervalId]);y||b.$apply()},g);e[q.$$intervalId]=r;return q}var e={};d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId], +!0):!1};return d}]}function ld(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "), +DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function hc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=qb(b[a]);return b.join("/")}function ic(b,a){var c=wa(b);a.$$protocol= +c.protocol;a.$$host=c.hostname;a.$$port=W(c.port)||md[c.protocol]||null}function jc(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=wa(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search=Qb(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function na(b,a){if(0==a.indexOf(b))return a.substr(b.length)}function Ta(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Db(b){return b.substr(0, +Ta(b).lastIndexOf("/")+1)}function kc(b,a){this.$$html5=!0;a=a||"";var c=Db(b);ic(b,this);this.$$parse=function(a){var b=na(c,a);if(!F(b))throw Eb("ipthprfx",a,c);jc(b,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Rb(this.$$search),b=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=hc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e;if((e=na(b,d))!==s)return d=e,(e=na(a,e))!==s?c+(na("/",e)||e):b+d;if((e=na(c, +d))!==s)return c+e;if(c==d+"/")return c}}function Fb(b,a){var c=Db(b);ic(b,this);this.$$parse=function(d){var e=na(b,d)||na(c,d),e="#"==e.charAt(0)?na(a,e):this.$$html5?e:"";if(!F(e))throw Eb("ihshprfx",d,a);jc(e,this);this.$$compose()};this.$$compose=function(){var c=Rb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=hc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(Ta(b)==Ta(a))return a}}function lc(b,a){this.$$html5=!0;Fb.apply(this, +arguments);var c=Db(b);this.$$rewrite=function(d){var e;if(b==Ta(d))return d;if(e=na(c,d))return b+a+e;if(c===d+"/")return c}}function eb(b){return function(){return this[b]}}function mc(b,a){return function(c){if(z(c))return this[b];this[b]=a(c);this.$$compose();return this}}function nd(){var b="",a=!1;this.hashPrefix=function(a){return w(a)?(b=a,this):b};this.html5Mode=function(b){return w(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a){c.$broadcast("$locationChangeSuccess", +h.absUrl(),a)}var h,m=d.baseHref(),k=d.url();a?(m=k.substring(0,k.indexOf("/",k.indexOf("//")+2))+(m||"/"),e=e.history?kc:lc):(m=Ta(k),e=Fb);h=new e(m,"#"+b);h.$$parse(h.$$rewrite(k));f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=x(a.target);"a"!==B(b[0].nodeName);)if(b[0]===f[0]||!(b=b.parent())[0])return;var e=b.prop("href"),g=h.$$rewrite(e);e&&(!b.attr("target")&&g&&!a.isDefaultPrevented())&&(a.preventDefault(),g!=d.url()&&(h.$$parse(g),c.$apply(),Y.angular["ff-684208-preventDefault"]= +!0))}});h.absUrl()!=k&&d.url(h.absUrl(),!0);d.onUrlChange(function(a){h.absUrl()!=a&&(c.$broadcast("$locationChangeStart",a,h.absUrl()).defaultPrevented?d.url(h.absUrl()):(c.$evalAsync(function(){var b=h.absUrl();h.$$parse(a);g(b)}),c.$$phase||c.$digest()))});var l=0;c.$watch(function(){var a=d.url(),b=h.$$replace;l&&a==h.absUrl()||(l++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",h.absUrl(),a).defaultPrevented?h.$$parse(a):(d.url(h.absUrl(),b),g(a))}));h.$$replace=!1;return l});return h}]} +function od(){var b=!0,a=this;this.debugEnabled=function(a){return w(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||v;return e.apply?function(){var a=[];p(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"), +info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function qa(b,a){if("constructor"===b)throw xa("isecfld",a);return b}function fb(b,a){if(b&&b.constructor===b)throw xa("isecfn",a);if(b&&b.document&&b.location&&b.alert&&b.setInterval)throw xa("isecwindow",a);if(b&&(b.nodeName||b.on&&b.find))throw xa("isecdom",a);return b}function gb(b,a,c,d,e){e=e||{};a=a.split(".");for(var f,g=0;1e?nc(d[0],d[1],d[2],d[3],d[4],c,a):function(b,f){var h=0,g;do g=nc(d[h++],d[h++],d[h++],d[h++],d[h++],c,a)(b,f),f=s,b=g;while(h a)for(b in g++,d)d.hasOwnProperty(b)&&!f.hasOwnProperty(b)&&(m--,delete d[b])}else d!==f&&(d=f,g++);return g},function(){b(f,d,c)})},$digest:function(){var c, +e,f,g,m=this.$$asyncQueue,p=this.$$postDigestQueue,s,w,M=b,t,x=[],v,N,da;h("$digest");do{w=!1;for(t=this;m.length;)try{da=m.shift(),da.scope.$eval(da.expression)}catch(ka){d(ka)}do{if(g=t.$$watchers)for(s=g.length;s--;)try{(c=g[s])&&((e=c.get(t))!==(f=c.last)&&!(c.eq?Aa(e,f):"number"==typeof e&&"number"==typeof f&&isNaN(e)&&isNaN(f)))&&(w=!0,c.last=c.eq?fa(e):e,c.fn(e,f===k?e:f,t),5>M&&(v=4-M,x[v]||(x[v]=[]),N=E(c.exp)?"fn: "+(c.exp.name||c.exp.toString()):c.exp,N+="; newVal: "+oa(e)+"; oldVal: "+ +oa(f),x[v].push(N)))}catch(L){d(L)}if(!(g=t.$$childHead||t!==this&&t.$$nextSibling))for(;t!==this&&!(g=t.$$nextSibling);)t=t.$parent}while(t=g);if(w&&!M--)throw l.$$phase=null,a("infdig",b,oa(x));}while(w||m.length);for(l.$$phase=null;p.length;)try{p.shift()()}catch(B){d(B)}},$destroy:function(){if(l!=this&&!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling); +this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null}},$eval:function(a,b){return e(a)(this,b)},$evalAsync:function(a){l.$$phase||l.$$asyncQueue.length||f.defer(function(){l.$$asyncQueue.length&&l.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)}, +$apply:function(a){try{return h("$apply"),this.$eval(a)}catch(b){d(b)}finally{l.$$phase=null;try{l.$digest()}catch(c){throw d(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);return function(){c[Ya(c,b)]=null}},$emit:function(a,b){var c=[],e,f=this,g=!1,h={name:a,targetScope:f,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=[h].concat(ua.call(arguments,1)),l,m;do{e=f.$$listeners[a]||c;h.currentScope= +f;l=0;for(m=e.length;l c))throw sa("iequirks");var e=fa(ea);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=za);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs,g=e.getTrusted,h=e.trustAs;p(ea,function(a,b){var c=B(b);e[Ma("parse_as_"+c)]=function(b){return f(a,b)};e[Ma("get_trusted_"+ +c)]=function(b){return g(a,b)};e[Ma("trust_as_"+c)]=function(b){return h(a,b)}});return e}]}function wd(){this.$get=["$window","$document",function(b,a){var c={},d=W((/android (\d+)/.exec(B((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|O|ms)(?=[A-Z])/,m=f.body&&f.body.style,k=!1,l=!1;if(m){for(var r in m)if(k=h.exec(r)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in m&&"webkit");k=!!("transition"in m|| +g+"Transition"in m);l=!!("animation"in m||g+"Animation"in m);!d||k&&l||(k=F(f.body.style.webkitTransition),l=F(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!f.documentMode||7 b;b=Math.abs(b);var g=b+"",h="",m=[],k=!1;if(-1!==g.indexOf("e")){var l=g.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&&l[3]>e+1?g="0":(h=g,k=!0)}if(k)0 b)&&(h=b.toFixed(e));else{g=(g.split(yc)[1]||"").length;z(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));g=Math.pow(10,e);b=Math.round(b*g)/g;b=(""+b).split(yc);g=b[0];b=b[1]|| +"";var k=0,l=a.lgSize,r=a.gSize;if(g.length>=l+r)for(var k=g.length-l,q=0;q b&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Ib(e,a,d)}}function hb(b,a){return function(c,d){var e=c["get"+b](),f=Ea(a?"SHORT"+b:b);return d[f][e]}}function uc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,m=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=W(b[9]+b[10]),g=W(b[9]+b[11]));h.call(a,W(b[1]),W(b[2])-1,W(b[3]));f=W(b[4]||0)-f;g=W(b[5]||0)-g;h=W(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));m.call(a,f,g,h,b)}return a} +var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var f="",g=[],h,m;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;F(c)&&(c=Ed.test(c)?W(c):a(c));ob(c)&&(c=new Date(c));if(!Ha(c))return c;for(;e;)(m=Fd.exec(e))?(g=g.concat(ua.call(m,1)),e=g.pop()):(g.push(e),e=null);p(g,function(a){h=Gd[a];f+=h?h(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return f}}function Ad(){return function(b){return oa(b,!0)}} +function Bd(){return function(b,a){if(!H(b)&&!F(b))return b;a=W(a);if(F(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0a||37<=a&&40>=a)||m()});a.on("change",g);if(e.hasEvent("paste"))a.on("paste cut",m)}d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var k=c.ngPattern,l=function(a,b){if(d.$isEmpty(b)||a.test(b))return d.$setValidity("pattern",!0),b;d.$setValidity("pattern",!1);return s};k&&((e=k.match(/^\/(.*)\/([gim]*)$/))?(k=RegExp(e[1], +e[2]),e=function(a){return l(k,a)}):e=function(c){var d=b.$eval(k);if(!d||!d.test)throw D("ngPattern")("noregexp",k,d,ga(a));return l(d,c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var r=W(c.ngMinlength);e=function(a){if(!d.$isEmpty(a)&&a.length q)return d.$setValidity("maxlength", +!1),s;d.$setValidity("maxlength",!0);return a};d.$parsers.push(e);d.$formatters.push(e)}}function Jb(b,a){b="ngClass"+b;return function(){return{restrict:"AC",link:function(c,d,e){function f(b){if(!0===a||c.$index%2===a)h&&!Aa(b,h)&&e.$removeClass(g(h)),e.$addClass(g(b));h=fa(b)}function g(a){if(H(a))return a.join(" ");if(S(a)){var b=[];p(a,function(a,c){a&&b.push(c)});return b.join(" ")}return a}var h=s;c.$watch(e[b],f,!0);e.$observe("class",function(a){f(c.$eval(e[b]))});"ngClass"!==b&&c.$watch("$index", +function(d,f){var h=d&1;h!==f&1&&(h===a?(h=c.$eval(e[b]),e.$addClass(g(h))):(h=c.$eval(e[b]),e.$removeClass(g(h))))})}}}}var B=function(b){return F(b)?b.toLowerCase():b},Ea=function(b){return F(b)?b.toUpperCase():b},Q,x,Ba,ua=[].slice,Hd=[].push,Wa=Object.prototype.toString,Ja=D("ng"),Za=Y.angular||(Y.angular={}),Ra,Da,ia=["0","0","0"];Q=W((/msie (\d+)/.exec(B(navigator.userAgent))||[])[1]);isNaN(Q)&&(Q=W((/trident\/.*; rv:(\d+)/.exec(B(navigator.userAgent))||[])[1]));v.$inject=[];za.$inject=[];var ba= +function(){return String.prototype.trim?function(b){return F(b)?b.trim():b}:function(b){return F(b)?b.replace(/^\s*/,"").replace(/\s*$/,""):b}}();Da=9>Q?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ea(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName?b.nodeName:b[0].nodeName};var Nc=/[A-Z]/g,Id={full:"1.2.0-rc.3",major:1,minor:2,dot:0,codeName:"ferocious-twitch"},Oa=J.cache={},ab=J.expando="ng-"+(new Date).getTime(),Rc=1,Ac=Y.document.addEventListener? +function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},xb=Y.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)},Pc=/([\:\-\_]+(.))/g,Qc=/^moz([A-Z])/,ub=D("jqLite"),Sa=J.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===R.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),J(Y).on("load",a))},toString:function(){var b=[];p(this,function(a){b.push(""+a)});return"["+b.join(", ")+ +"]"},eq:function(b){return 0<=b?x(this[b]):x(this[this.length+b])},length:0,push:Hd,sort:[].sort,splice:[].splice},cb={};p("multiple selected checked disabled readOnly required open".split(" "),function(b){cb[B(b)]=b});var Zb={};p("input select option textarea button form details".split(" "),function(b){Zb[Ea(b)]=!0});p({data:Wb,inheritedData:bb,scope:function(b){return bb(b,"$scope")},controller:Xb,injector:function(b){return bb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:yb, +css:function(b,a,c){a=Ma(a);if(w(c))b.style[a]=c;else{var d;8>=Q&&(d=b.currentStyle&&b.currentStyle[a],""===d&&(d="auto"));d=d||b.style[a];8>=Q&&(d=""===d?s:d);return d}},attr:function(b,a,c){var d=B(a);if(cb[d])if(w(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||v).specified?d:s;else if(w(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?s:b},prop:function(b,a,c){if(w(c))b[a]=c;else return b[a]}, +text:function(){function b(b,d){var e=a[b.nodeType];if(z(d))return e?b[e]:"";b[e]=d}var a=[];9>Q?(a[1]="innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(z(a)){if("SELECT"===Da(b)&&b.multiple){var c=[];p(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(z(a))return b.innerHTML;for(var c=0,d=b.childNodes;c ":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a, +c,d,e){return d(a,c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Md={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Hb=function(a){this.options=a};Hb.prototype={constructor:Hb,lex:function(a){this.text=a;this.index=0;this.ch=s;this.lastCh=":";this.tokens=[];var c;for(a=[];this.index =a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=w(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw xa("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index ","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(Ua.ZERO,a.fn, +this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=oc(d,this.options,this.text);return G(function(c,d,h){return e(h||a(c,d),d)},{assign:function(e,g,h){return gb(a(e,h),d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return G(function(e,f){var g=a(e,f),h=d(e,f),m;if(!g)return s;(g=fb(g[h],c.text))&&(g.then&&c.options.unwrapPromises)&&(m=g,"$$v"in g||(m.$$v=s, +m.then(function(a){m.$$v=a})),g=g.$$v);return g},{assign:function(e,f,g){var h=d(e,g);return fb(a(e,g),c.text)[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var h=[],m=c?c(f,g):f,k=0;k a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Ib(Math[0=Q&&(c.href||c.name||c.$set("href",""),a.append(R.createComment("IE fix")));return function(a,c){c.on("click",function(a){c.attr("href")||a.preventDefault()})}}}),Kb={};p(cb,function(a,c){if("multiple"!=a){var d=la("ng-"+c);Kb[d]=function(){return{priority:100,compile:function(){return function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}}});p(["src","srcset","href"],function(a){var c=la("ng-"+a);Kb[c]=function(){return{priority:99, +link:function(d,e,f){f.$observe(c,function(c){c&&(f.$set(a,c),Q&&e.prop(a,f[a]))})}}}});var kb={$addControl:v,$removeControl:v,$setValidity:v,$setDirty:v,$setPristine:v};zc.$inject=["$element","$attrs","$scope"];var Bc=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:zc,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var h=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};Ac(e[0],"submit",h);e.on("$destroy",function(){c(function(){xb(e[0], +"submit",h)},0,!1)})}var m=e.parent().controller("form"),k=f.name||f.ngForm;k&&gb(a,k,g,k);if(m)e.on("$destroy",function(){m.$removeControl(g);k&&gb(a,k,s,k);G(g,kb)})}}}}}]},Od=Bc(),Pd=Bc(!0),Qd=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Rd=/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/,Sd=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Cc={text:mb,number:function(a,c,d,e,f,g){mb(a,c,d,e,f,g);e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||Sd.test(a))return e.$setValidity("number", +!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return s});e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});if(d.min){var h=parseFloat(d.min);a=function(a){if(!e.$isEmpty(a)&&a m)return e.$setValidity("max",!1),s;e.$setValidity("max",!0);return a};e.$parsers.push(d);e.$formatters.push(d)}e.$formatters.push(function(a){if(e.$isEmpty(a)|| +ob(a))return e.$setValidity("number",!0),a;e.$setValidity("number",!1);return s})},url:function(a,c,d,e,f,g){mb(a,c,d,e,f,g);a=function(a){if(e.$isEmpty(a)||Qd.test(a))return e.$setValidity("url",!0),a;e.$setValidity("url",!1);return s};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,g){mb(a,c,d,e,f,g);a=function(a){if(e.$isEmpty(a)||Rd.test(a))return e.$setValidity("email",!0),a;e.$setValidity("email",!1);return s};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d, +e){z(d.name)&&c.attr("name",Va());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,g=d.ngFalseValue;F(f)||(f=!0);F(g)||(g=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f};e.$formatters.push(function(a){return a=== +f});e.$parsers.push(function(a){return a?f:g})},hidden:v,button:v,submit:v,reset:v},Dc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel",link:function(d,e,f,g){g&&(Cc[B(f.type)]||Cc.text)(d,e,f,g,c,a)}}}],jb="ng-valid",ib="ng-invalid",Fa="ng-pristine",lb="ng-dirty",Td=["$scope","$exceptionHandler","$attrs","$element","$parse",function(a,c,d,e,f){function g(a,c){c=c?"-"+$a(c,"-"):"";e.removeClass((a?ib:jb)+c).addClass((a?jb:ib)+c)}this.$modelValue=this.$viewValue=Number.NaN; +this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name=d.name;var h=f(d.ngModel),m=h.assign;if(!m)throw D("ngModel")("nonassign",d.ngModel,ga(e));this.$render=v;this.$isEmpty=function(a){return z(a)||""===a||null===a||a!==a};var k=e.inheritedData("$formController")||kb,l=0,r=this.$error={};e.addClass(Fa);g(!0);this.$setValidity=function(a,c){r[a]!==!c&&(c?(r[a]&&l--,l||(g(!0),this.$valid=!0,this.$invalid=!1)):(g(!1), +this.$invalid=!0,this.$valid=!1,l++),r[a]=!c,g(c,a),k.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine=!0;e.removeClass(lb).addClass(Fa)};this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,e.removeClass(Fa).addClass(lb),k.$setDirty());p(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,m(a,d),p(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var q=this;a.$watch(function(){var c= +h(a);if(q.$modelValue!==c){var d=q.$formatters,e=d.length;for(q.$modelValue=c;e--;)c=d[e](c);q.$viewValue!==c&&(q.$viewValue=c,q.$render())}})}],Ud=function(){return{require:["ngModel","^?form"],controller:Td,link:function(a,c,d,e){var f=e[0],g=e[1]||kb;g.$addControl(f);c.on("$destroy",function(){g.$removeControl(f)})}}},Vd=aa({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),Ec=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required= +!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required",!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required",function(){f(e.$viewValue)})}}}},Wd=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!z(a)){var c=[];a&&p(a.split(f),function(a){a&&c.push(ba(a))});return c}});e.$formatters.push(function(a){return H(a)?a.join(", "): +s});e.$isEmpty=function(a){return!a||!a.length}}}},Xd=/^(true|false|\d+)$/,Yd=function(){return{priority:100,compile:function(a,c){return Xd.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},Zd=ta(function(a,c,d){c.addClass("ng-binding").data("$binding",d.ngBind);a.$watch(d.ngBind,function(a){c.text(a==s?"":a)})}),$d=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding", +c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],ae=["$sce","$parse",function(a,c){return function(d,e,f){e.addClass("ng-binding").data("$binding",f.ngBindHtml);var g=c(f.ngBindHtml);d.$watch(function(){return(g(d)||"").toString()},function(c){e.html(a.getTrustedHtml(g(d))||"")})}}],be=Jb("",!0),ce=Jb("Odd",0),de=Jb("Even",1),ee=ta({compile:function(a,c){c.$set("ngCloak",s);a.removeClass("ng-cloak")}}),fe=[function(){return{scope:!0,controller:"@"}}],ge=["$sniffer",function(a){return{priority:1E3, +compile:function(){a.csp=!0}}}],Fc={};p("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=la("ng-"+a);Fc[c]=["$parse",function(d){return function(e,f,g){var h=d(g[c]);f.on(B(a),function(a){e.$apply(function(){h(e,{$event:a})})})}}]});var he=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",compile:function(c,d,e){return function(c,d,h){var m, +k;c.$watch(h.ngIf,function(h){m&&(a.leave(m),m=s);k&&(k.$destroy(),k=s);Ka(h)&&(k=c.$new(),e(k,function(c){m=c;a.enter(c,d.parent(),d)}))})}}}}],ie=["$http","$templateCache","$anchorScroll","$compile","$animate","$sce",function(a,c,d,e,f,g){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",compile:function(h,m,k){var l=m.ngInclude||m.src,p=m.onload||"",q=m.autoscroll;return function(h,m){var s=0,C,u,x=function(){C&&(C.$destroy(),C=null);u&&(f.leave(u),u=null)};h.$watch(g.parseAsResourceUrl(l), +function(g){var l=++s;g?(a.get(g,{cache:c}).success(function(a){if(l===s){var c=h.$new();k(c,function(g){x();C=c;u=g;u.html(a);f.enter(u,null,m);e(u.contents())(C);!w(q)||q&&!h.$eval(q)||d();C.$emit("$includeContentLoaded");h.$eval(p)})}}).error(function(){l===s&&x()}),h.$emit("$includeContentRequested")):x()})}}}}],je=ta({compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),ke=ta({terminal:!0,priority:1E3}),le=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA", +link:function(e,f,g){var h=g.count,m=g.$attr.when&&f.attr(g.$attr.when),k=g.offset||0,l=e.$eval(m)||{},r={},q=c.startSymbol(),n=c.endSymbol(),s=/^when(Minus)?(.+)$/;p(g,function(a,c){s.test(c)&&(l[B(c.replace("when","").replace("Minus","-"))]=f.attr(g.$attr[c]))});p(l,function(a,e){r[e]=c(a.replace(d,q+h+"-"+k+n))});e.$watch(function(){var c=parseFloat(e.$eval(h));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-k));return r[c](e,f,!0)},function(a){f.text(a)})}}}],me=["$parse","$animate",function(a, +c){function d(a){if(a.startNode===a.endNode)return x(a.startNode);var c=a.startNode,d=[c];do{c=c.nextSibling;if(!c)break;d.push(c)}while(c!==a.endNode);return x(d)}var e=D("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,compile:function(f,g,h){return function(f,g,l){var r=l.ngRepeat,q=r.match(/^\s*(.+)\s+in\s+(.*?)\s*(\s+track\s+by\s+(.+)\s*)?$/),n,s,w,C,u,v,B,t={$id:Ca};if(!q)throw e("iexp",r);l=q[1];u=q[2];(q=q[4])?(n=a(q),s=function(a,c,d){B&&(t[B]=a);t[v]=c;t.$index=d;return n(f, +t)}):(w=function(a,c){return Ca(c)},C=function(a){return a});q=l.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!q)throw e("iidexp",l);v=q[3]||q[1];B=q[2];var F={};f.$watchCollection(u,function(a){var l,q,n=g[0],u,t={},G,D,O,P,H,K,z=[];if(nb(a))H=a,u=s||w;else{u=s||C;H=[];for(O in a)a.hasOwnProperty(O)&&"$"!=O.charAt(0)&&H.push(O);H.sort()}G=H.length;q=z.length=H.length;for(l=0;l +A;)x.pop().element.remove()}for(;w.length>z;)w.pop()[0].element.remove()}var k;if(!(k=v.match(d)))throw ve("iexp",v,ga(f));var l=c(k[2]||k[1]),m=k[4]||k[6],n=k[5],q=c(k[3]||""),p=c(k[2]?k[1]:m),r=c(k[7]),u=k[8]?c(k[8]):null,w=[[{element:f,label:""}]];C&&(a(C)(e),C.removeClass("ng-scope"),C.remove());f.html("");f.on("change",function(){e.$apply(function(){var a,c=r(e)||[],d={},g,k,l,q,t,v,x;if(y)for(k=[],q=0,v=w.length;q@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}'); +//# sourceMappingURL=angular.min.js.map diff --git a/config-validator-ui-concept/partials/main.html b/config-validator-ui-concept/partials/main.html new file mode 100644 index 0000000..a297d48 --- /dev/null +++ b/config-validator-ui-concept/partials/main.html @@ -0,0 +1,152 @@ + +++ + +Select Cluster+Select Rules+Validate++ ++ + + + +++ +++++ +{{cluster.name}}+{{cluster.description}} +
Status: {{cluster.status}}+ +{{cluster.nodesCount}} nodes++ ++ + ++ New Cluster +++ ++++ ++ +++ +++ +++ +++ + +++ +++ ++ + + ++ + +++ ++++ + ++ ++ + + + ++++ + Feature: Nova has proper Keystone host ++++++Given I use OpenStack Grizzly 2013.1+And Nova has+"auth_strategy"
equal to"keystone"
And Keystone addresses are+@X
Then Nova should have+"keystone_authtoken.auth_host"
in"$X"
+ + Feature: Nova has proper Keystone host ++++++Given I use OpenStack Grizzly 2013.1+And Nova has+"auth_strategy"
equal to"keystone"
And Keystone addresses are+@X
Then Nova should have+"keystone_authtoken.auth_host"
in"$X"
++diff --git a/ostack_validator/webui.py b/ostack_validator/webui.py index 5ff630c..c615bde 100644 --- a/ostack_validator/webui.py +++ b/ostack_validator/webui.py @@ -104,7 +104,7 @@ def get_clusters(): #return json.dumps([Cluster.from_doc(doc) for doc in db['clusters'].find()]) return json.dumps([ Cluster('cluster1', "Kirill's DevStack", description="Grizzly-based devstack with Quantum and oVS, deployed on Kirill's laptop", status='Available'), - Cluster('cluster2', "Peter's DevStack", description="Grizzly-based devstack deployed on Peter Lomakin's workstation with nova-network and FlatDHCP manager", status='Broken') + #Cluster('cluster2', "Peter's DevStack", description="Grizzly-based devstack deployed on Peter Lomakin's workstation with nova-network and FlatDHCP manager", status='Broken') ]) @app.route('/clusters', methods=['POST'])++ +Cluster Name: Bebebeko ++Rules selected: 17 +++ Run Validation ++