From 244e508b32e00352c4bc202c947a4566e68f455c Mon Sep 17 00:00:00 2001 From: Dmitry Shulyak Date: Sat, 13 Jul 2013 13:03:54 +0300 Subject: [PATCH 1/4] added base functional for nailgun config --- fuel_health/__init__.pyc | Bin 0 -> 143 bytes fuel_health/clients.pyc | Bin 0 -> 7871 bytes fuel_health/common/__init__.pyc | Bin 0 -> 150 bytes fuel_health/common/log.pyc | Bin 0 -> 4130 bytes fuel_health/common/rest_client.pyc | Bin 0 -> 15277 bytes fuel_health/common/ssh.pyc | Bin 0 -> 5170 bytes fuel_health/common/test_mixins.pyc | Bin 0 -> 4079 bytes fuel_health/common/utils/__init__.pyc | Bin 0 -> 372 bytes fuel_health/common/utils/data_utils.pyc | Bin 0 -> 2009 bytes fuel_health/common/utils/misc.pyc | Bin 0 -> 639 bytes fuel_health/config.py | 88 +++++++++++++++--- fuel_health/config.pyc | Bin 0 -> 18374 bytes fuel_health/exceptions.pyc | Bin 0 -> 8683 bytes fuel_health/manager.pyc | Bin 0 -> 6010 bytes fuel_health/nmanager.pyc | Bin 0 -> 12933 bytes fuel_health/services/__init__.pyc | Bin 0 -> 1085 bytes fuel_health/services/compute/__init__.pyc | Bin 0 -> 160 bytes .../services/compute/json/__init__.pyc | Bin 0 -> 165 bytes .../compute/json/fixed_ips_client.pyc | Bin 0 -> 1642 bytes .../services/compute/json/flavors_client.pyc | Bin 0 -> 5445 bytes .../compute/json/floating_ips_client.pyc | Bin 0 -> 4062 bytes .../services/compute/json/hosts_client.pyc | Bin 0 -> 1231 bytes .../compute/json/hypervisor_client.pyc | Bin 0 -> 3166 bytes .../services/compute/json/images_client.pyc | Bin 0 -> 8865 bytes .../compute/json/interfaces_client.pyc | Bin 0 -> 3369 bytes .../services/compute/json/keypairs_client.pyc | Bin 0 -> 2264 bytes .../services/compute/json/limits_client.pyc | Bin 0 -> 1548 bytes .../services/compute/json/quotas_client.pyc | Bin 0 -> 2891 bytes .../compute/json/security_groups_client.pyc | Bin 0 -> 4645 bytes .../services/compute/json/servers_client.pyc | Bin 0 -> 19781 bytes .../services/compute/json/services_client.pyc | Bin 0 -> 1219 bytes .../compute/json/tenant_usages_client.pyc | Bin 0 -> 1806 bytes fuel_health/services/identity/__init__.pyc | Bin 0 -> 161 bytes .../services/identity/json/__init__.pyc | Bin 0 -> 166 bytes .../identity/json/identity_client.pyc | Bin 0 -> 12494 bytes fuel_health/services/network/__init__.pyc | Bin 0 -> 160 bytes .../services/network/json/__init__.pyc | Bin 0 -> 165 bytes .../services/network/json/network_client.pyc | Bin 0 -> 8136 bytes fuel_health/services/volume/__init__.pyc | Bin 0 -> 159 bytes fuel_health/services/volume/json/__init__.pyc | Bin 0 -> 164 bytes .../services/volume/json/admin/__init__.pyc | Bin 0 -> 170 bytes .../volume/json/admin/volume_types_client.pyc | Bin 0 -> 5540 bytes .../services/volume/json/snapshots_client.pyc | Bin 0 -> 4903 bytes .../services/volume/json/volumes_client.pyc | Bin 0 -> 5493 bytes fuel_health/test.py | 2 +- fuel_health/test.pyc | Bin 0 -> 8162 bytes fuel_health/tests/__init__.pyc | Bin 0 -> 149 bytes fuel_health/tests/sanity/__init__.pyc | Bin 0 -> 1628 bytes fuel_health/tests/sanity/base.pyc | Bin 0 -> 12887 bytes .../tests/sanity/test_sanity_compute.pyc | Bin 0 -> 3708 bytes .../tests/sanity/test_sanity_identity.pyc | Bin 0 -> 1801 bytes .../sanity/test_sanity_infrastructure.pyc | Bin 0 -> 3620 bytes .../tests/sanity/test_sanity_networking.pyc | Bin 0 -> 1773 bytes fuel_health/tests/smoke/__init__.pyc | Bin 0 -> 1626 bytes fuel_health/tests/smoke/base.pyc | Bin 0 -> 19870 bytes .../tests/smoke/test_create_flavor.pyc | Bin 0 -> 1528 bytes .../tests/smoke/test_create_volume.pyc | Bin 0 -> 3244 bytes .../tests/smoke/test_image_actions.pyc | Bin 0 -> 3695 bytes ...nova_create_instance_with_connectivity.pyc | Bin 0 -> 7798 bytes fuel_health/tests/smoke/test_user_create.pyc | Bin 0 -> 3095 bytes 60 files changed, 77 insertions(+), 13 deletions(-) create mode 100644 fuel_health/__init__.pyc create mode 100644 fuel_health/clients.pyc create mode 100644 fuel_health/common/__init__.pyc create mode 100644 fuel_health/common/log.pyc create mode 100644 fuel_health/common/rest_client.pyc create mode 100644 fuel_health/common/ssh.pyc create mode 100644 fuel_health/common/test_mixins.pyc create mode 100644 fuel_health/common/utils/__init__.pyc create mode 100644 fuel_health/common/utils/data_utils.pyc create mode 100644 fuel_health/common/utils/misc.pyc create mode 100644 fuel_health/config.pyc create mode 100644 fuel_health/exceptions.pyc create mode 100644 fuel_health/manager.pyc create mode 100644 fuel_health/nmanager.pyc create mode 100644 fuel_health/services/__init__.pyc create mode 100644 fuel_health/services/compute/__init__.pyc create mode 100644 fuel_health/services/compute/json/__init__.pyc create mode 100644 fuel_health/services/compute/json/fixed_ips_client.pyc create mode 100644 fuel_health/services/compute/json/flavors_client.pyc create mode 100644 fuel_health/services/compute/json/floating_ips_client.pyc create mode 100644 fuel_health/services/compute/json/hosts_client.pyc create mode 100644 fuel_health/services/compute/json/hypervisor_client.pyc create mode 100644 fuel_health/services/compute/json/images_client.pyc create mode 100644 fuel_health/services/compute/json/interfaces_client.pyc create mode 100644 fuel_health/services/compute/json/keypairs_client.pyc create mode 100644 fuel_health/services/compute/json/limits_client.pyc create mode 100644 fuel_health/services/compute/json/quotas_client.pyc create mode 100644 fuel_health/services/compute/json/security_groups_client.pyc create mode 100644 fuel_health/services/compute/json/servers_client.pyc create mode 100644 fuel_health/services/compute/json/services_client.pyc create mode 100644 fuel_health/services/compute/json/tenant_usages_client.pyc create mode 100644 fuel_health/services/identity/__init__.pyc create mode 100644 fuel_health/services/identity/json/__init__.pyc create mode 100644 fuel_health/services/identity/json/identity_client.pyc create mode 100644 fuel_health/services/network/__init__.pyc create mode 100644 fuel_health/services/network/json/__init__.pyc create mode 100644 fuel_health/services/network/json/network_client.pyc create mode 100644 fuel_health/services/volume/__init__.pyc create mode 100644 fuel_health/services/volume/json/__init__.pyc create mode 100644 fuel_health/services/volume/json/admin/__init__.pyc create mode 100644 fuel_health/services/volume/json/admin/volume_types_client.pyc create mode 100644 fuel_health/services/volume/json/snapshots_client.pyc create mode 100644 fuel_health/services/volume/json/volumes_client.pyc create mode 100644 fuel_health/test.pyc create mode 100644 fuel_health/tests/__init__.pyc create mode 100644 fuel_health/tests/sanity/__init__.pyc create mode 100644 fuel_health/tests/sanity/base.pyc create mode 100644 fuel_health/tests/sanity/test_sanity_compute.pyc create mode 100644 fuel_health/tests/sanity/test_sanity_identity.pyc create mode 100644 fuel_health/tests/sanity/test_sanity_infrastructure.pyc create mode 100644 fuel_health/tests/sanity/test_sanity_networking.pyc create mode 100644 fuel_health/tests/smoke/__init__.pyc create mode 100644 fuel_health/tests/smoke/base.pyc create mode 100644 fuel_health/tests/smoke/test_create_flavor.pyc create mode 100644 fuel_health/tests/smoke/test_create_volume.pyc create mode 100644 fuel_health/tests/smoke/test_image_actions.pyc create mode 100644 fuel_health/tests/smoke/test_nova_create_instance_with_connectivity.pyc create mode 100644 fuel_health/tests/smoke/test_user_create.pyc diff --git a/fuel_health/__init__.pyc b/fuel_health/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07453f40f38240be9902f0a754bb2151f8cf4fe6 GIT binary patch literal 143 zcmZSn%*!RE`YPO2Tq JieeyU002MiA7TIi literal 0 HcmV?d00001 diff --git a/fuel_health/clients.pyc b/fuel_health/clients.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7533a2f44c1a2c62df8defb32cf3b691dcae855e GIT binary patch literal 7871 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 literal 0 HcmV?d00001 diff --git a/fuel_health/common/__init__.pyc b/fuel_health/common/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0062379d17976d9a6586564999b4f34282c2a9d2 GIT binary patch literal 150 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 TUJ7m(5z^MK)>jZ2YxVyE5>0io literal 0 HcmV?d00001 diff --git a/fuel_health/common/test_mixins.pyc b/fuel_health/common/test_mixins.pyc new file mode 100644 index 0000000000000000000000000000000000000000..31622eb4ccb4ead40925d5d0c30c0cff45ecf50d GIT binary patch literal 4079 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 literal 0 HcmV?d00001 diff --git a/fuel_health/common/utils/data_utils.pyc b/fuel_health/common/utils/data_utils.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e150def96b00f68ca6c23dc5b37e60ca738378c9 GIT binary patch literal 2009 zcmcIl+iD|65Un0vt+ny)lEjd}GUUSQVJ)%j!@?4BTi6f?f{aNXgh7mETAo&BdX(-S zvko$W*q@N!$Oq*i5BY|CKys?amLbpac&2o!yQ{0K`c%2|_rd7tCx3mH(aqDt?-%&| z6-16#QAsr4VMTLwJ08(Iy2TxucLYaNcB$&oyhkd>P?xS@)2F;gIplz@VK(4>+gI;V zKBVg|%}102V|*lQ9xy%`KfpQ6KX_(i1sFyU`fa8+!PM4!R%;)gFM{^rIO8S!aTu@h z`S&5VFvF{8jpJhfh_3J|IyxD5Fg-JD!9IQwJ@B9pF7)y1Qk&OR7~DW(Lwk%a25egC zF@8ye{~Bmo)Rmq#(~YawItzZfYIJ#w1FnwwfUUkLbXtaDn$=ZR+i4R_>8E)b(uKgu z<|6E2FLu3P9~^^^AV?XOa@33m_~X+`s1E@U=UQ>VTg5@1$YEz=UYCgA)uIMYkq@a0 z60f%TJ%z#-D4`&C3zI)#w|o>*87G({-G%Tc6x`5d|2B|5Z95!@d%@RsIiL{H8m#Kj zc0gC8epO@(Udkx#YhJ^I4;i=0!yYqE2X1@9_A--x%na82fvC}^_ z;70s?@@>3wbrqkPb8X`Sta%o1YR57SMGQIsI1nOe=O>;yd48IoPEK?G6!-^>q9$Tr z)D5<_b%>WbHa07pT;~9?%|y6dY46iB?T4@{LfH6M)2VF83NVU==#|J8e?A+tKcpYG zsf9dM8nPmRPT?JhZ|r$mn*4QbSLUp7Dc5Jh{%R)mQIEeRU9xqJ8y9i3B>pH&X9KhEuXDURI=dp96rG{!sWYtOnuN$c?lumf$>! zTB;ir0noNDzl7;1#*^sKINZPaS;tucresW%mQ%|Vi3<8H$mH}!<96(sux~d3f~<@+ zL6;Y@n_0zHYcOXb>VG;d8Vwo=A78F!U8A}=DX@2;u1hZ$WqfI}mMz&uR_eC%uoWLt z40itS>87|VrfzA1OWnl+Z5@Gg{dsOa)a$D~HQonGxG}Xo@_^AJ2w@?2@SBb;WKXzp zCR{j)bX->7q@~x%2R!x>#9b(Y{@4Eu?D*5F&YMzy_88c+*jMrwJ?!jv4?)7iC;tLB CbJh*S_yJ*;pc#&V zhiZ#;9WNGPdtAB>iA;9p9xUwjov8=ec*P3YkTfXQ&6oJnYky znF$TY35D1u0C6A=#h;Qf%Nw(%e>v`}3mX!{uU&04cvo+)mJ+q2qpeZBpfRstrGUvd SxrrT`H_ZLCvgW+zW`ZByb(3KL literal 0 HcmV?d00001 diff --git a/fuel_health/config.py b/fuel_health/config.py index 4988f55e..cc7cb302 100644 --- a/fuel_health/config.py +++ b/fuel_health/config.py @@ -502,20 +502,18 @@ def register_smoke_opts(conf): conf.register_opt(opt, group='smoke') -class Singleton(object): - - _instances = {} - - def __new__(cls, *args, **kwargs): +def process_singleton(cls): + """Wrapper for classes... To be instantiated only one time per process""" + instances = {} + def wrapper(*args, **kwargs): pid = os.getpid() - if pid not in cls._instances: - LOG.info('PID INSIDE: %s' % pid) - cls._instances[pid] = super(Singleton, cls).__new__( - cls, *args, **kwargs) - return cls._instances[pid] + if pid not in instances: + instances[pid] = cls(*args, **kwargs) + return instances[pid] + return wrapper - -class FuelConfig(Singleton): +@process_singleton +class FuelConfig(object): """Provides OpenStack configuration information.""" DEFAULT_CONFIG_DIR = os.path.join(os.path.abspath( @@ -572,3 +570,69 @@ class FuelConfig(Singleton): self.compute_admin.username = self.identity.admin_username self.compute_admin.password = self.identity.admin_password self.compute_admin.tenant_name = self.identity.admin_tenant_name + + +class ConfigGroup(object): + # USE SLOTS + + def __init__(self, opts): + self.parse_opts(opts) + + def parse_opts(self, opts): + for opt in opts: + name = opt.name + self.__dict__[name] = opt.default + + def __setattr__(self, key, value): + self.__dict__[key] = value + + def __getitem__(self, key): + return self.__dict__[key] + + def __setitem(self, key, value): + self.__dict__[key] = value + + def __repr__(self): + return u"{0} WITH {1}".format( + self.__class__.__name__, + self.__dict__) + + +@process_singleton +class NailgunConfig(object): + + identity = ConfigGroup(IdentityGroup) + compute = ConfigGroup(ComputeGroup) + smoke = ConfigGroup(SmokeGroup) + orchestration = ConfigGroup(OrchestrationGroup) + compute_admin = ConfigGroup(ComputeAdminGroup) + image = ConfigGroup(ImageGroup) + network = ConfigGroup(NetworkGroup) + volume = ConfigGroup(VolumeGroup) + object_storage = ConfigGroup(ObjectStoreConfig) + + + def __init__(self, *args, **kwargs): + self.prepare_config(*args, **kwargs) + + def prepare_config(self, *args, **kwargs): + for interface in dir(self): + if interface.startswith('_parse') : + method = getattr(self, interface) + if callable(method): + method(*args, **kwargs) + + def _parse_identity(self, *args, **kwargs): + pass + + def _parse_smoke(self, *args, **kwargs): + pass + + def _parse_all(self, *args, **kwargs): + pass + + +def Config(): + if 'NAILGUN_HOST' in os.environ: + return NailgunConfig() + return FuelConfig() \ No newline at end of file diff --git a/fuel_health/config.pyc b/fuel_health/config.pyc new file mode 100644 index 0000000000000000000000000000000000000000..94956ab5fc47cc3b60aa329a79f2f461370ad0fa GIT binary patch literal 18374 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 Iy(stp4`HUAC;$Ke literal 0 HcmV?d00001 diff --git a/fuel_health/exceptions.pyc b/fuel_health/exceptions.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ea1b2aaeb261c7e2254784d69c59e5788f5e9f83 GIT binary patch literal 8683 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 f2ZqKjj15=4)5Bw1e||T%4xz literal 0 HcmV?d00001 diff --git a/fuel_health/manager.pyc b/fuel_health/manager.pyc new file mode 100644 index 0000000000000000000000000000000000000000..384c720430b88584db749d71736e0809d3f56a47 GIT binary patch literal 6010 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 literal 0 HcmV?d00001 diff --git a/fuel_health/services/__init__.pyc b/fuel_health/services/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2197ee55fe7f69e6a47a871f80a4f3c4dd9dba1f GIT binary patch literal 1085 zcmcIj!EV$r5Op?mDUo_YNQl#j(;n#NULizVao7V3WKUE`uIo&iKoW;|(rQspz}Io- zOZWk1ob2)gCCa>b#$)@<8z=sAl)U}*`-4@}6Z7{qn+JwmsSCzPVWf&k~AWIU~A+33%D&STY|CV!SD+?dfQhWxgH8O)55zB+YK4} z1^l=)sal{CfzT6RdsFqUZLp<;9`Y&E{(G_!$IgVpGX`X`%uxwP;TMHLtg_8w#?w|{ zXXmo$h~X|$cS`9{>1Jko=E2>OgeM293O*EHDvdcK>Om7;nt}UwT6SyR7Iwrpy z1IzOezXW&n87=Kstrx6PwrmImJ zkNKOvcYTm66C(GniWGZ|q{m90vp4E;5N`J*T5B5Anj}~2#^poJZWgnf9WeYO6-M{d xuZ%ZVPuaX&i}~!);d&t_hF?MJ+*xKMH)yS|yz0~9a9!VoRSRv;?$zD%;eN!{p9@Ig3^*y{rLFIyv&mL ac)fzk5)PngHo5sJr8%i~AUlhJm;nH3dnWz> literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/__init__.pyc b/fuel_health/services/compute/json/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc4091f40cc9bec147565f428e76165e149e4ef8 GIT binary patch literal 165 zcmZSn%**9_>S|yz0~9a9!VoRSRv;?$zD%;eN!{p9@Ig3^*y{jB2rJpK6i f%)HE!_;|g7$`THskv6&cDWy57b|8z3ftUdRO0+2K literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/fixed_ips_client.pyc b/fuel_health/services/compute/json/fixed_ips_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cfbee6fad1e0e9a38fc8a6184a3ecc99f8aba859 GIT binary patch literal 1642 zcmcgsO>fgc5S_K10HIY|J_@~{9DwGM_=b?E5TX(iNCa>Y5)snM*qg?YV_VrZP$@m7 zzm7Y?yde0}~nRj`PeE&fUQDMfT04FW=f` z>DB1X@B)E{?dKTwA&fz8q`<*M=ZcyPNH-2B^*HaiMbW4iAT(*iY{oGk@EFG7RkQ>^ zk7gb%;luj03~1S+Rf`n%Wj5HkPmxT_z1p_tt+#Li}UhCyVJ_ZrZtN%Sz>zpAIFfb$tMvzj?b*IU&M1GlPb3M zYq>~e64!33>qYLabF3-i!fB4|VM=1`2YBJMoSU!?t3^38iL>FPHhI6aZqj$4znSZ) ziE}p%*I;b8h8)gpS%eeTMQ4@OiHJ3*P9rXf0}RW!N!?W)m9R)m3-1ZnM{poM_}xDP z!Qhmb>6M~S9-aAg7O)PiK){QbHX=a9gNX;e`J|!Ufh}!cVDtead|-uv4K4|D9D8D% zaLBMlp}dS!E43Ffo6$CmL^5$q^1|3koX=%?dMVVoTMbaXfv;2J;w-oKux=S8fy~=# zMv?6RvQbm1S^UMm{Lfqf$ejcEW=VdX##ofAhBSesVvMvv_H0x1A O;!~E~GLKu{uKydAI)_96 literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/flavors_client.pyc b/fuel_health/services/compute/json/flavors_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..598d4321cb7f2bfa1d83c945cb1042d538346917 GIT binary patch literal 5445 zcmcgw>2lme5FTlF?On%52*ioQku8eD6xdr(;7}nP!68%uSqjD`&r_LFJEOLzc03vPRpzU1MeS6SmsFIls17Eo>Q|*6DD~Y=mA7uK*04?bH-6fy z9-4LzBGATeW~uI3`xLr2v*;i%j2roE>&x~?86UIM!yH3ssDTsadHSzVqatlj+Bgj3 zzO-u!>OhN~nNppdS(Vgeq^^<~X*5(aD~&mo)TMDoB@Jm{pE+qPsN{?^7FDpdx&RI0 z8HnMvNxj~Mu=w-T5gyxD`@T9t8?vH~s_Lkw9@LbFx&4aTud4kT*M(3_0UF}bUY+F@ zM9B>Lx(EcMI=W$)_EH;$mIuapuaoXtu8s3s8)k zs}M$Koq!F?JqMWYMO`hOeq_vHUL?|q26itT6q!B4wYnGeY{-?X=qeFr8?Dw}-qo!^ zt6${%I<}_O8R%>+H@358VN}--_jHumy;iA=X_YFs_D$Yvb)2=sSR7!ze?OqhUBYFk zwel`{b6!l#6BMd0Nb__!)Ug0uyh4m&Z(zRbR<` z;182v5M5`Ujt?vF^tOOkYGyd{;mbx`SI`G8S$fAdFpj3~#d)H!p;Eir3d(#iv0;`+ ziMuf%-g0+8Dx$8D^#qttRA|$e#+^L5KLv=zS+dmFuzbeLP{PoIlsALlOa6IpY3iVx zMVwzM)B>VWnw`Kt;C!$|ah8Hy5uAe%%Lu^1(;Rz-;ylGNXK_7Ym$esh#3Y{KVT$;1 z&%pCf$CjoaIW(z*t}1R#0&z}UI<5Gv1)+dPD&n+g2(5_IGCbObTsp)L{>rTdDe*O9 ziwVSJPF#{+>~0FvWV)!)b_ki$2}`)ln;0!a|1!OhEWjtD%Aa#?5uBKUIYIuO+Hirt z0aQTq8;Iznihm&en%X#?RYx-d=?pO|+9$e4$OE(L8Y#jps>>pCqRU0~$wduW^xJTe zbh&75a?u%C^!sp;bh&6=7Qwn;q!c#B(1O|^2SHQG3dtfz*#D))w z5!yz!NpxWxGe~(sKM$Uxc%I?~3Nl{6^W~Jghf%R>L_6*il82`o3sO&r@yc-6fNtg` z2<2D2+46VJU-Fg_6ys~zdjVsTA89ZK$tEsy0pfHz*;?g7vE&V%X?ly@)6L!VK=(?I zS$~*Hc!vO$$Q=RQK(=wLOB|;`vjoX$P=a&|1BS{ee^esSr3Hfb&~OkuP!dQ&qW4}T zgWmY@lH`4@N7cYRf?Fv_-mUQyq``5jE{pov|iCxT=YKgdz%* zN8B5ype(PNdFOOf{5$l)TiDYD#Y2@CH6NoseV8Z8i80JElyVh?zru=w(DE7u0n@?= z;!*8|Xh3o$+$CkMVcG2-EP2wMJ4N1o42sX;j>kGMT-tFc_jQy?t;X<4-F8<`<&A*( zV!&s6)Js!L8DgdUbEh!KPnZCAjOhdJw*mer-^E7Ns-qL|$bX^}DQ|eVVccF%hGfxn z)k3p_;)dyqv7L5OkcoR+U6*v_+Lq-}lqB2o9(!HN3`63WFb&ERaM6F`6qe5AyD>`V z>GKL70gpAbm_r2RtTK#B)(sVJv9dH|7CP4n?w^+BS~xh+-TXk8Og}Q-FmfKTULapm z_<~T#jsLUhf~!<%`WEAxse7Q4M*9Whry8xjO5c@FGNF8c!3Q8Fj4r-O5Wvw+7bc>Rul$w;J3lOyAClJb{ivJw)=}@+^0QHZ6-vI9P3uX-B-fk~ QKA@jUf|>W`{j-&S0Bu;#`v3p{ literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/floating_ips_client.pyc b/fuel_health/services/compute/json/floating_ips_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ee3ca06e58e892bbdc77b10248f4fa163391527 GIT binary patch literal 4062 zcmc&%?QYye6dkX3x80DmX;DjCK{1Gy1(dAdM?nG#B~=heEZ~4>1ITji*~D9~ZFy!3 zk&-{OkHAy$pC{n~;G8?&kCs-dkVrP`oB6mqANR~TckKVQw(`{&=Hui4r+7>V zlj7^CT&dl8*;Biow6|2=QWIb8`pTo9ukyBI{#(93Z^Yw7P=oUOa z!(;BkXe<{qpXMqbVY$APJt?c66YTQzXD8u^du&oX|>LEgczOk>yZ8h%DFT$h>;b07g{ZkyG z!@;JNu0w9eo`#8{tjKH>Sx%Ug#VFge^i9f1HMQEVvK-quFZUvQP-*Ejx_*!)S|V-R z@Gv?bg&bYRoT9&oCt501Y|JlZok}I1+Wlx+=k^8q>LM;|M9)5|N{qyJuwPE}U^=Mk za;y_;2BWFYH%eni8x}yidbF?O-0lyW#h5{}pGNjj1!*Vh?nUCale09`T zRzLtQXhhXvgoAK-)B+q5uA7)4)OK1ICWwPPGd3tkL7eBoY~2BlVKB;at81MG_YQ)% zI0&k^W>|G?HqBWKQJRgJ{|5GHe6)RX%?N0-4hEnv&~VF$eV*O3JZ32BA}Ldi^(wWe ztsu$Z$vHv%Quo7<-f}) zzlO;^*EX>GIzXi3EH{GmGR~XkJiMO3a&XOLzk|BMl%-udB6Bmw)*<5%^4H;uFoKb> zv7MSwl#c`-mUg?G7O9*82jv+wFAW)GX-EMKFVegOb8I+rGMv0+7^5akZ=tI}bKN77 zXT9?dO`hX9SARyuaWxZi0-qb8VMA75I0#&3JS7=XM!PSBZL6b>I6D;uVWFK;ejLZ^ znC4cVmykjo#LMUfwiI+5t$Hdkg&!GK)NmW_=DBGARguQWgFa(GD1~Zi>>1&>;gc;490%f#2mUPq+qz=sJ zsznatrR0_|Ws;E-6gW`e-!On4abPN)WTPwzn5=cZX((K-Y@l?5IN?1^&VHPx$SKCI z!2{*(*{!T{kPs)QcmYe)*YI^1(M6$&a7>8dCYa0H8}vPXjbmEE9mvIL8OF$#kz3*| zxEQLk0-!$r&a}yy69V>QtmAfO=4*a7wnDMzMK@$tvFk9ko|F&te?&HX8zVSAo)Dm% zHeHI(W0*1|4XQ){ZL#`ZO701E2{1*&+~Bc+PQ;F zF}u@qfbc2}vwiq7jO3B;>Zz90vK{9}JAIQo9B0kaW6SQmlVm0Woy%#RXk>Ouc1m?J zd?`~n>F2z4uj38-@RSDtIT>Tb)4rR`Ctb3Cew~rhSH@OKzm{z@2Xw|y^4|kBfu>b%7 literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/hosts_client.pyc b/fuel_health/services/compute/json/hosts_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7cc75a9a97e57f5a4d9ebe9ed7b6714f08dd98a3 GIT binary patch literal 1231 zcmcgr!H&~F4E0Rff=XAr2awNucE-Bb7L zxbr1^0N74hzF>(ajvagKH_x8v*V**LkDs4%I6V=4U(*|&lPG8@Z~*H;*WeU18rB+A z5rNfEDkw&918@ZRypA}06_06a^_!k$tVqQviPQ$Xa+Pfn&&ho21BStVxB9reEw9P< zhTia$gr&liUo(yy1w(qOwH`sbiWzA>A@TRU;(aejAT0$40;QqWa3Gyz1cwnE#&8^i zB3~UrJ%W17ac06LR)TgJ-{TZ~hR}C*m&y_DlW9!VR%i@z!Q8iHwLy-}ebe=5amIRv zne!Wi`_76p*xk1(w=wU*5s6@3nX-bMvnPL>HCBu+3*o!p6=GyPZcV>)_<&<=o3&^- zGA0v5gp{;o>l>T&Nw@R0%`qfpZ{3{OE$2v-54PFb%;7dUfeFb8a#9E1QU;1Mxin|d z?NcU}u?5Bq>am)toJnBN?7QWentd%i*T5tn6@1ZfO)FylnfZu+k~#2CoqSSi;+eCA z3li@uDt(zbcPStif$RD(7fX5|nruMcwXrBHGH~%bpA{iyXesZNAZCsK>}=>n`Ra?k zP$uGzc#|=AbRZ*`&j^4V2cn63q|Vh+?uGQ$NGEBM_+}W>_@Z}~Oa{I5t(6v}56Sw6 z`Yxf%jB~dGBbeyfcwm%oDn28@LvKMFLe2gzo_nAz7}yPBwD9R%T6g z()H>3*YVC@!XE(NtbIu?z4qxYBFRp6cXoGXzx{T0f`4w``uVTFf6b`-1o;0Jg+GVL z@$;x8nzVJFN{<#kO?>k5fRs;#M|qE)6P*$LJ_%&_@vx7n`d@s;Ll0GZ3nEr*AC+2F z*1m=2k0-TS{;An4+s?Kt_!#gV3O|NWunr@8;>>f8S{pDp=~3>B95i&O@k zFB1&zyPg}A4_xIY#mB=NSS}ktoR>#p!PEm&p=(I_wZN+ZWVk}8?rEQW}F_@XE&{Hd8Gqb20tL(niQ=67% znphy>lq|qxYAADT4}w)$#8R=cW&?edE|hE3Df3ga%v~dG>?~=PrF~7tsw%B)A|r=r zk`w$JYSGLrRMbTE(#%z6IVu`e9vQa9k;Ngk?PR9X($1pJ8IC%aqdA)@nypSR$=sQa z>XTTQbBMy?C3y$lz}xdO!9p}r9NeFxB49ddoq6f#aHR9JX!tl|C-l4J4b}Ly~ZmO)qSGMF%uQX}SP9Mu2 zoN}qSc9kb4KiLhE_RZG0WbJiQV%Hy{n}rqRA9#1J7}}4p?D5Pz4Rd8vU8?-$7$0Eh zMU10%QhXbl7C$+M_>PFXt3JUrenZ4P=|j1GR@!%A1qZ#2Wzu@g51`(}R6>tjwG~|@ z46f)3PTub*3)TkblnoqZ5iMNIxJcQDnE$=zx=c?(J5wFJ9Gb#4xmKAj^aZ#_EFf(m z{D55;T~p#xoW=E)y8^Zwoap@j06K$P=b(QK-#X9_g~(S9`e!iU;)Jf)rd6gme4gTxb^sJC^k4f9?I== zxlrOVA7ozAlOzk1H>E;Tb}}}Va@k5O4{a>x7r!k+_!!HB5x)nqexO|KT5~74jN*dJ zUk3jE;O6Q(bl}TVYCnLGWUWiiMz~H3Bt1w`Y?p_{7(p)o+@bdl@UL2kzmcb%#pQkf GZtx#Y#SJ?E literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/images_client.pyc b/fuel_health/services/compute/json/images_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3c5bae78f0db538c871e1be4939f1a79ec7667a GIT binary patch literal 8865 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 aSq{suT0MSG0w$h1OykrSzeoX&SN;QKMYov% literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/interfaces_client.pyc b/fuel_health/services/compute/json/interfaces_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..304927f625c9685e17693e01a4eac0ac4ba7181e GIT binary patch literal 3369 zcmd5<-EQ1O6h5|h^HWk1S_myjbVU_ud(o@}675AnK!s2%u?Pn#>I%tn?b)oiUfcDI zn^sD0NZ*1-;7z#Wf;--V2Y~N8-k++Xz)d3}dv@md%$YOieCH>@9~Uot^UH7FB{KgD z@cTJl8)8WDc#?~ZmUB-=p3;5EeVGL^3dAE{AbCe-T^V(;?uZFw492cJ7daDoFj}Li zgZ>)CW`E*u*!M7X7chjzy1RL13b&$}r-`XtRuf8at zmw4@c3qm%9NGpv7fOseN(3E`FVCTQms;}^C>@=w&ov%xNO;g+hq#0aFW$R6 z3RM^2R}XI0~j+afu3ab6xp?pbB@qc!!DEHP?XM^jjnk3&jVnGL=d z@yzI=img2^>r@wU<0es4=k5*inj$V-M9w~zqJureY%nQjX3z|(x}2KC*}=Fm`OVV0 z@l6NEwd-hN;@nLJb7kxxX;mIfZCMPmrT3yl{k&g23#sZ=yq1?0?}~T9OK1twi9$8@ zCz#Nb3PhNB_so+Yd^yDv&;>MpARuDdx&XetI`)Ay${5;rF;Xd0+rge4l=kLQ83opI z^@VeBGMNE{R<}CtKQc~D%3G+z@-j|spDKo%7}Qa%c;%~&t#tCROrM>P9o;tc$TRDJ zokfg%0Mgv7SG{d7AsC1+T3XHeGbX?=A_LPUU4y8-qNw;loh_}tYUbEhB*;1tC^;s7y6=cViFOhn>_#);?CmuqsmuD%5Kx^4p- zHXs{1iE%MXWijVLTXT+c;Iw*$ddqh3Svd~6V zqlk#G33<)-TufenAUfVBsZH$63PRUGv+wbI|B|=nU7Wu}(~h@^5vXE-5Lt`{Mb#Zl zUJO>?36Z!6*+5P^i;x9ufDYhCQ|3z{%VS>=vIyaD7oRmkLn2?j(OR9lykzxrx8A^j9Tiei25Cq);4X4MY(0h=xAm^%0YfW`asHYT8Gb&$$+bMdHR!PkU$%$buY?EsJ=*i<-d=A?#VOgZ?K5ls!XU_JA$xJL2;IwbhRI(c5ClAbCay-xru@3$4yp~Et{EMpFB7A+vIf} z0<{7{7tL^FX0lE_;&F4P8(e*eBDe6{H5`gHP3q1u*G zz1}KnH8(BI5w%xn)o^j`G;#8@G{SjW2WCk1@zFW;FpmApF+3N+aVuEQ_52hc=Q)(k z%_X0?6EpuBa%$jT_ICYYU%LnvgGhTX^nSEW6wS)C$qkl_iD6k7?U%xLunIrqKo5m` z96rL($NR$YS{pZ}AZ@D%f;E4uyV+gywzfC%tDS9|lBtnnBf@rZ-X89wE1Z?ZKI*ZX ncY^#kL$m{Zflra6ZSgtYOH1;d*6yDXwU%z#^0xdPZzuQ*QGE{m literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/keypairs_client.pyc b/fuel_health/services/compute/json/keypairs_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c5ac8c63b1ea27e142cdaa03b4a9dbcfb5879020 GIT binary patch literal 2264 zcmcgtQIFe15T3P@lnW`>LR(rMsCYn%gzhZya3J-BQ2W-306y_Rgk-t)=FY*fE$^Bt z;_m7C>v-pv^ar%xH+GIfdF@5s&CJg1&dfKnv*D|o(;xo&`{zuCUx@$jG29WR9G{U= zWZBb!ltwmzECVrlC^nFlk$faCMJ`2tU4~RYnUArxc#Yp;Zb14err0|Fq%3UZ{l{RR z+3inh(Yk)=>B*0aD-QyQA7i*jm@I6=#F(zUG}2pux#dXmfOeM<;R{td8Jt<(koaUi z!TyZXZam?s-(vFkjGV*kK-PhrgT@@n`AE*kayb?Q**cWAJ?YvBvlT*d!^c!Y7GW%XPIXPCa$Aded~?`Wfler)7Pb_-$iV=xqB(ky-WDk9epp zS1}3CGdswubYqoiQs-XOZLUn(`Lm>JOaCEtZIxC&q2?T{=;VF@6`j=^8+B3B)@z%2 z7p*#59@NgS4m@(w^U0Y_OMey(&bVlBIa<5Aihj4-hRI4YP2gd(jaeoSFdRb_bKgu& zMjW`#p-_Jff8+mrjdpaAQt$F?AF?=i7LnE4MK9 zGR2G&c4#%lx2eD@do92*>&WR2H`*LvduaAe#+3i-Hvfr*!teuNXg){4;|N#*oc61? zAVPyUt`Ih=5vo@Zf(_U+&_W14`q!kF2CUVQT#R)~-xg4-P*eH}bzbj<))uc`dv3f#(L87Y=iR1pdSZi18h=Ki=7(`>O~>~^Xp-J7?>rZATX;!EC%Y-5bxQeNSME@N8gwIfj?w l5D&zrt`5;!{qQWr&=7qLug!0T_qYf2JN76?OlQHZ@C{4~1A3SGJOJ2E%1`g@D&w`s&e-$$bAq2+8}GjV_?W@)3-JFHF83Toj*ox}VA|^vDgm{G zsRWS+U?da*@)4W^oB@2A1{6MtLVUISg})>csQL{Q$~b>im8S822hF!-U3%AVyqUaD z{^XbFe2vRJLt!v8Cct9>&IR=6W3uT8a!FaIA*e|-!q99D#l>_6) z?fgu4i^|`kSkt79*Ay9{2`tWa5*X(#Gcp?8KFS?)F}pfj0(ZXWH}S?S;DD+Q%TSh z=n`-f%^v+iBE0l&!szuWBRbHNI5D2Vp?Vnl%BHzvzap5}xiGF}<=E!StB1kg>kHHA zv9lF6Soc*w#_a)_U9l}Px)t@4?!m}>K;<$r2u^T;Ou)z>9g&wjJNroM{V(gVIAj|B zvxy=56Q(Aeo~SL9Jv)Y)cnZ{Q+*aEpXv!F)#5SgPGJX{C|2@J{loCx{*{9T_rB73zyf`53)7+!DMVCYuMBhvUe*Jjd#;3_&xDLl2inb3E zYGV)5L}%7+p?Xy1HZrc^v*Rxhug2d1_$hAlHH^l{G5{R8^vLy(!KN*WeI9k%=HXxH zAJFBHrX32Mf3ptyU)={h;3F7|zehEuY8fDmk>K4^)x@eOJY!T3+MT<7Sr#ej1 zvCQ*uyvAMd>`hhZGL*@8QB^9*604Nu0cUwOPfjeqJIj|vWwjk}IkHijpD24)XaS8b zzfWd*%-`4+jM3>lcAekVS(I7DZ;nwVG3FSh z$!WgSlWJ0w`9jaEnanGl?&ZeL_bh_t>grTSsXd)E&X`H#@?>H1Z1SB%QOzW-`^8zv z*|Uq=u+!w-^ZMS*M~OLMOo-<2B2U0I_`UFG=Nue^Rv{bpZ+$us=)6T1K@jfIh^mVN z0>3-=K{@wlMlfF_#*XZ%9*H|6qwQ#(m!oLp=Du$@;c~Ml@E%|@d0=c0jnbmfG8S5; zM_XEco@gti^E@S_X&%K!Qafb&<@<)*B$iK@a_*tFC7AHW~~& zNx_zP*W0}181NLYVi4Fk4(r@kywPR1K}ncj$XLU0B4bqAKu~8 zD{Nk6a~I|%5Y59NFI401HQ^rsxJfvB&Q5YZ95DJb#2_I$-(*FJx9E9~%KM@&o4gnv zXIKr8PX|1bTnFGg021ebBT*s%fde3a4p^{0)c{%!fGj!Sg6fU{Z3nEafS;&d6QJXO z?h5#Y>aGB54(P3b->B{h&~-q61^hvEUx1zi)>i=Ja$SJF0|qN#*Q*BttUF-10zUTY zp#TF1Y^;FKy?R4{p#V^6=yL+ez??VeAu9x^6>*L?SuY!H0nV)u??8lQi_W)M;}>9M zo7D%^dW*~G#t94Ont2M-A2rukMI1pBMP%HX|IjoUo+iu08WEg4(vA#>ZK8VDWj$A6mv+C zO|lb}6i&wG$&cu0ReP?_R1qbm!;;L{D1#%GSBlZIs!Z&eIw|w2P-T@i!`*Plh_5ru z!`OTO^0kPty*NiX%Wrn+mhgWnZnHh|iZ}#SvaV&IxLRT&EV|eXW#P;Ihn*+ZrEyDN z7CcLuTl(x($Wju%&V~sM-(>R^8`i(@KARDnci6nk<~=s=!-#qp*y|K)^h*^Hma|Io z=~_Sb(Po~&P`~33yrDnvar5&9?;UT)yW?+q4aZEBl06@14nBP;wajA#TdD8?smdCdLH-ObLNi!$N9z2e*68)L^VG?{(peS zgeX${c`8?GXHxgnjwkIcmABN;S3AD)Xy>cEt%h@IXAbXerF}Jk;hcJ;)I+7d-RW?s z?Oq4NW`E*mtLLF=7g2=T*o{2Xg`KwP2ZJVFPsr{BZL>;BC4%_N*PCbN6(6{fa{kGblqg{kau`Ai{ zR&Sm|%yF=Kq^pp7u?r}oC@V4>MV1pLWiiNhEp3x>II69-ORUE>&dc4%9*nef8eRRA zC0aaf+psV?AA}rT#;nm_#6vAFqu7}HWtGZHT-&{hwz`N58_}|dS0#nHi&}rL z9O{1EA64bPPORwd=gK1eV`@3PnN=Dmat;Re_%KK}+4gwv6@y1Gek1681~56^q*p{K6Ajm|>R*94@+ zw!1BL6=BgBCCmpIyfcpJv7eah?a`^#*Re!Jw>yIG`t2%_SI? zW@T)$;!KQ>=J#(HdjbE)ea&`zf(0Rkv-9i+%eX>S7fG3FtWBw1Z3Q}dO9CS=Y*adik^r$n-=E>$>coo56!b#nAj{qM*+{UFsQsWLfJPJFj{to>g;7g~vMQXY>D7GC8JPL}}}8tfAmr}c1TWS|lB zQq&qcnd-{8Kq3Uf@9;&|UgCG8JFO#9`pHBQ<2MmdW&-IgbQqFFb$sabV(W_c(wN`W z>`6E=?im=434@;*5FPai9`g%|tV0z%#=C}VAPy+DhJ=ECL|P&F)%d+5?;W*v z)L|}yLys&)nlbNKirRuYns4}dhzh0wBsc^eSJB&*FG10+oQz#{xWGDwa3>>U(HtOe zo3K#0niadJk~OI6T$?EaabO|GbEhD5Fd6&cT;q8U`$Q;yX2y)Se*|-b5i&j#n9yiQz3aQ}gcKhciw1DjT2N zVM)O_RpugY`8IkDuOe!RTIYV3y{Dmho&TzObiiY%p73bZaDD#(2a*;ibxeL{l+T_= zo5Py>K$xAS406$@%Ah#)d-RUAkdjC}oE#cZx#^(+v19r!8N8D>sG`e09=svh2$I0f z@2*Qe51~Xd4-viBQdM8>Vxpa*Vn6oP*X{z~H1uc4Xb0yIFII96P11ge^d{LK^P|Zs z{^7h2c^F#mBunMQmmv&uzpXMbb+R{AyF0x5Y`F~KWI`Fr&3HjRvbW2+NT(@g$a8F( z2FP4y_bd@*x^qgZFL;_1oi5*(O#h;{>|OGzCBl8oPH>mo|5E#ZQ& G?EeMK(t#HM literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/servers_client.pyc b/fuel_health/services/compute/json/servers_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0414b28e7fc894749d881ae7f973973d2c7052a8 GIT binary patch literal 19781 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 literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/services_client.pyc b/fuel_health/services/compute/json/services_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5076ae2a5d759d05dfa0c8a484009dfcb46235f0 GIT binary patch literal 1219 zcmcgs!H&~F4E0Rff=XA5KnV5#=Um!I91sVzLhKERAX0IlLK=l+(k7Z@qKpHo)ID{- zjyqq%2Y@|EmoH$WjBAfQ@$<8%!SA#Aho8SbWiUPg{l2B;UXjS@6<`21gD$}cs3mM9 zh&%u-p%9Qy;0E9b@MRNl_&S`@(ee*HaVSW|If+C&yfUS35Fe4b*4_6q({9*$zy28C zB9P>MN6S4Yp(!_|kPPKUz>tB`Z6=VcLk648NSxLcpLKy;6R4&fr)HdD?E%N(J^loj;rdp0iLc^5nM##SiAo_S%xqJXTjbcx)@_d( z7p$k48oO1vZ?$*2q1KSk;Dm(Jrbt*p{$@}9CatwM+SIupw#&Vd_PA4hXYc{X>LzVa zab!p)c;P;i7VT`UqdsaoTj>m4RP@>`t;1r8#QI>XolXtzq7jUXM#xd+Y;(J-GT)+A zyHA+g3tEn0gLo$9B4ZwSpO>flB`Hj#pOd42uM(~WTuUaOX_r8oWDfjO8!rk;B=h;$ zaaGnWPl$ZUC&Pyz$89xw(io?2iLq(!ygy<3ytC7;^~yJ!@9%;hJfqa6bf`{rM?w+cZ^fM<_DsGRxVz+k5RZHz9|nH`A{-<1 literal 0 HcmV?d00001 diff --git a/fuel_health/services/compute/json/tenant_usages_client.pyc b/fuel_health/services/compute/json/tenant_usages_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e2529017c78f61aabea3e09a97a9c423eaecde13 GIT binary patch literal 1806 zcmchX%Wl(95QfKg5@<WdV^8MXXXcwT&aaL24?li>3aNb@{J+Jg-$6upElP8wi@#uA5;4kcZl=lA%;vG_0=+~O_RGhLUe^2D**X!?Gf z$Hw;!9~c(-G@cor8x~nv8)f>e2PR01nQu-@C4*X3-{MdWc#UC`wMwTRD~9*1F`fsR zl13S5{k^CnX#};I`*oF?J3Lo{==010nj}Jl8@cl$Q*P~+RgtLBXm?txbXaIJ9U6dW z+WuSxshPX2G1_fSb`xFXZo7Fci2P8{9hRpaC(AxQ&9;-ZX>D5}%a4>{> zS_F}ng&s4K)n!lxnU?tsh5fITE=4&hqSG70V(#PUG}gwy=Ij&nYR*8idid?zI{+54 zdra?dTp+Ux0Dw_Fek+;n=99QR{kwEVwEunWx!yg(C)d7b_q+YI z28@tkI_5D1*O|7i9HN|LMSh42VcPoPVFpR*yjkm|biQgL`kJ#wyy#nfd&~I)-6Ex| literal 0 HcmV?d00001 diff --git a/fuel_health/services/identity/__init__.pyc b/fuel_health/services/identity/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc157bc4fd0575f9cb2061075d75b8aaa72091a3 GIT binary patch literal 161 zcmZSn%**9_>S|yz0~9a1^fU5vQ}s*r3ySiy zQj<%H_0vjIb9D2IOVV^pQj4Md_>9!VoRSRv;?$zD%;eN!{mhiqypqh4O8xlw%)HE! b_;|g7$`THsaW=X6DWy57b|6cOftUdRmkcLt literal 0 HcmV?d00001 diff --git a/fuel_health/services/identity/json/__init__.pyc b/fuel_health/services/identity/json/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec7edecd4634f9f1b3419067eec16daa1fcd866d GIT binary patch literal 166 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 literal 0 HcmV?d00001 diff --git a/fuel_health/services/network/__init__.pyc b/fuel_health/services/network/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..137abb326da3b8e80f077e4dd4d3cecbaca1d5b2 GIT binary patch literal 160 zcmZSn%**9_>S|yz0~9a9!VoRSRv;?$zD%;eN!{k+tY^8BJ~{rLFIyv&mL ac)fzk5)PngHo5sJr8%i~AUlhJm;nH5btek| literal 0 HcmV?d00001 diff --git a/fuel_health/services/network/json/__init__.pyc b/fuel_health/services/network/json/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b1e06484a4051763fa5ebb6b51d7d4b0eea1b156 GIT binary patch literal 165 zcmZSn%**9_>S|yz0~9a9!VoRSRv;?$zD%;eN!{k+tY^8BJ~{jB2rJpK6i f%)HE!_;|g7$`THskv6&cDWy57b|8z3ftUdROz$Z9 literal 0 HcmV?d00001 diff --git a/fuel_health/services/network/json/network_client.pyc b/fuel_health/services/network/json/network_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c06d41ce08d8844f8d5b5014a56f3d2637157b2 GIT binary patch literal 8136 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 Z$AO0&lyA9H&iAN_#NC&@YxT8v{|iqcxl#ZC literal 0 HcmV?d00001 diff --git a/fuel_health/services/volume/__init__.pyc b/fuel_health/services/volume/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58b16d4cd7362051bb4dbc3ceb5a3e167a66bbc6 GIT binary patch literal 159 zcmZSn%**9_>S|yz0~9a9!VoRSRv;?$zD%;eN!{j&U=QlPf@_{_Y_lK6PN Yg31yOpkX$-`6;D2sdgYMi-DK{06ldkm;e9( literal 0 HcmV?d00001 diff --git a/fuel_health/services/volume/json/__init__.pyc b/fuel_health/services/volume/json/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f9dcea21f85dfeb6c2a256d1eadea4c2d9c03ffa GIT binary patch literal 164 zcmZSn%**9_>S|yz0~9a9!VoRSRv;?$zD%;eN!{j&U=QlPf1;`}`Q`1s7c d%#!$cy@JXT4xouPx%nxjIjMFady9dX0RSAUD24z4 literal 0 HcmV?d00001 diff --git a/fuel_health/services/volume/json/admin/__init__.pyc b/fuel_health/services/volume/json/admin/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3cb0d316c42c7fb02dcd2a88b4f62d2750e27039 GIT binary patch literal 170 zcmZSn%**9_>S|yz0~9a9!VoRSRv;?$zD%;eN!{j&U=QlPf1;`}`Q#FX63 jJpK6i%)HE!_;|g7$`THsxi-1^DWy57b|Bk}ftUdRGL9<5 literal 0 HcmV?d00001 diff --git a/fuel_health/services/volume/json/admin/volume_types_client.pyc b/fuel_health/services/volume/json/admin/volume_types_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..127088f2b9a91f91bbb27ef69c431e2cc10432d4 GIT binary patch literal 5540 zcmc&&e{bYQ86MmFBb)AV*DF2R0>u;xTj*tlgi`5*fRYN-0s$PZ5>df&>`CIB*WP+& z8zLotT|WyShX47CkHH6k=Xu9#dmD0qkdjqA8IQ;F<9*)edEasHk9*s{{_EdFo z*_2a9D7HiV-1@?_NQ?<>6&hV;;a>FggV1dvlwE}H|MtVM)}OAhPwAF~dwH4ZIz;zn zm6uiqOGg-XeeH3cPf%F=dFm2Y^wpWKE>TArsLO%69IEF-<>A>`pw0&BY{-7`h-K3< zmKG_SmMv+)-WAXw1pBiIry($AwbXSaxNPAzj`K3NacsG$v?`DD6RCbC09l$MO>9zB zC$R-ucFZAk{aK!B`z6$mR(X+O42!m;u=m;~n=f>=vNMir2l7^N9I;|K?+SyI$wJG` z5~e+`>P&8ul|7ADbzxs(UtK1pjoEXCTP2106KeC*YN6+=`LeFgbZX7~c%_TSm9fW< zEisV$_*7$2r}JjTX708%KQmQ1PqIZ`HZ8I_6Q|;#JIjlRocKB}L+4fAYu>j1(0k~m zbWNI(8xj1t7Wm|qz?Kcvvx%zTC4O*Dfa>6U?x{!bp-ZV6-0&Q2pZMx3P*(#Qh`-R~gT zuSzXw!`wxFWa%WR>N2e|Z8^Y+wgMgvCSw;>k{MxmM9awA%cM>gM*0&snx@ufDV3ut zySP>4?8}(GfT804rr$=Rp))IgUObhN8+Fk9tA?Kfw~&XJ0KT?6rF`- zsBe<%@0eHgSp;9WWPnns&l`~!n(ee*M2{keM_5-w(4ql>zDtnJg&~ zZ5Wb{bO=4ga3<`%(XBw3C~8Z$>UD{}hWm(Ei70fAC0x%|i=~lwm(W#_e&{J;nsI(d z=tKpg5H*p4XXn_G5h39_G3kF-F8C0Oa=O^}!d=Tm0 zh>U%XoWYw<4bZCRAn#l8n!?7If*M;NCMD}$h*haBWlBeJ5q z8{j#VH^GynMJVzfjq~5fK&M^;<&L3Y{~dyejuH(WY&YQ)eUGnG**Z%|8hNK!eHH8Z zLR9P{^%Rd?!s$=FCPoq`dTFam32yp05t}Y7O5Q195k!-)*qkH!VR5LgM(eORlCUTQ zyu|rwBZc`3rfOr+-c4b#k6POsk#J3sC*g zZ?ljjN|a!mx8gahb!&4@^Bq3DqkM{y;d(IZJI^1{!#U6Bf!72zIu9?NSoZjwo4y{@ zc=&9o-UYbF==>i8Tp#@xa+ZP+F}S&)$7OX#2)YZzlsWV5#y{Hidi?9#HAfFa_9>hI zQ&zTcwRAkfO`ndNvWcUeI|Bym?9*`) zy3BCo3zL4**$1QT_`g$8gtE(Od3q5ph%&DePMJRIlFW`R*HhK=+@3P&-ONyBnlQoV z6wJ^rmnnGrTe(?6d|O!QZmt(Pn#Af&vdh_Yxw1XJ6GWGEk?-Pp5%Ub8y89}zy4(Df zuIcvQPtE$S$>Wkc)lL{M?n@@SKVx<)JBY=?__#wgi{nL=tqP4>YF!*>RT{@G?-4RG zI7Q!J@m&`0u=qX;>OjQPTl51KKSa@yRBE^JMTVcOc%n6w>rpWBr(4tQ$$0YeWPtx$ zlj&sWPQr39W+rE8L4Fo$J_GHf)nZYVJNP(Zn@>FvdMNoCcKbULh<@Zi`7zgP=($sG I>OTnn1(+F41ONa4 literal 0 HcmV?d00001 diff --git a/fuel_health/services/volume/json/snapshots_client.pyc b/fuel_health/services/volume/json/snapshots_client.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba45496a17368cc7f733abb34c708d8c6e313dfa GIT binary patch literal 4903 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 K>DIZkSN{tGv_?4q literal 0 HcmV?d00001 diff --git a/fuel_health/tests/__init__.pyc b/fuel_health/tests/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c93dea3cc378120d371dd6c7c04fbe1f3ca4fdc GIT binary patch literal 149 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 I%;}Z?1%4+1oB#j- literal 0 HcmV?d00001 diff --git a/fuel_health/tests/sanity/test_sanity_compute.pyc b/fuel_health/tests/sanity/test_sanity_compute.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc03dfd818264fb649c44fd58562207736953323 GIT binary patch literal 3708 zcmd5tdLd}I0%Uf$(lIh#;GrnXB>#M z`?UNx{szB+9{}e&_PFgfEK;FW-1u~6zL|5*oNq42{-3u8AAk7A_pxXnpZrnkTAA?fS6Hm$lVDXk$BfFz6Az=64cWzzcHX*n?l>f$qT}a)Yd& zcw}9YWw=4;&L*_)(EcWL*P*+c&^?FlZ9?}Qy1xk>ICLPw$?z4-=qnO~fF4ZvFjK|^ zaamZE7ACONMAf;DPXk0LXk!y3brIXNEL27T8}V=s?84Ac1k0|M+9L9XW6Etwt+N;$ zfLwGs1pWnyr$Q{~C&Am#o_Hq3GmjfdO0l50666Vqem(J&Le0^B4(@wI@eUL{B!M|J z{*v=^Wdr?dYHV7Z1T-D1idfThR1r*dkP)C~qZ*DJl`B>6LW!G}xWLW`Z2fwl8gGihm!H3;P)jo} zah+T^e?u&?8tcF7VIEU$()Is8D8%aS^g9y4D{sOM*#a6b9;BUTA7KJpu@#d{t;*^} z8u_B>uF5KoD8{q z*KE8D)zr|jXp#Hm>E)gH9y!1_VguJ$Zf*#tX-}GAs?z@@8N!v;Sa2j_&7Wu+Ib)PW zz`rfv@-9Nsr8SkZy7lc70?zSyAUT<~2w4;rD%VkDai2#~Ue4+aRpggZG%I5VrG?d1 zqGBBqBEr`o5Q^|Eh<73GL3}`BNbfmuElFJHkqu6zaa{KOzU+JV_TAqRe@IzCNEX}V waD?cv|Mu+-h#57hV#uFfnBgP(j5zm&#WrtZa!k#q4H=)q8-v9EKpyyi1E?jgRsaA1 literal 0 HcmV?d00001 diff --git a/fuel_health/tests/sanity/test_sanity_identity.pyc b/fuel_health/tests/sanity/test_sanity_identity.pyc new file mode 100644 index 0000000000000000000000000000000000000000..705894fd8010ddf16521c6c99252385cc22007ef GIT binary patch literal 1801 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 z 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 literal 0 HcmV?d00001 diff --git a/fuel_health/tests/smoke/test_create_flavor.pyc b/fuel_health/tests/smoke/test_create_flavor.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6b8fcce9e7423a7e1024357dba3796db5f66362 GIT binary patch literal 1528 zcmcIkOK;Oa5T3P@^Z{ujgg^xjzMuw)BmyoR06~j5Mi96VAz7|>+&J|M&pK65dnyP1 zCcl9nP-fO?LZzaf8f9m99=r3+H@kNKv^RGj|Na!h;^*@GmIu9Nq4}>M0Z0{$6)4di zNE}FA7`v>yfG$iM5Gl|N_z7?Z@O9h--GtBG7M~EG^RKITWg093W6G6w5D=OUn?EGM zEHCMuPUGwgl3AjWJ$pRpIST{~!J8R<@%z zKyQM+1!vB`o+j+@S>n09^fc_AwzY0qtKQ~52*dQ0g^=JS`SC@$DP}^-f{-Bd4zT70 zb>B!mWst__JlmSHAVqq}T2AJfZ}_ZUy|rga=!wM!>X?q=Rm+PavF2eu3##k(OV*SQ z=?TyEt?(qT7n7IehMR>Ri5`$Gf>Sb9+U4l?oYkZF$2GCW;n-Nyi&cVSK1>d`R{}M+ zKQFLM=KYTe@(q3Jg%b>qJi*@|cBSj4&7uzXYYxmkw#=}Mqq$!q6?sPJlL<^kM&7|< z`QVDEgIv%3S&&p{?*7N!6b4Sv1)Md{WTj>!CaJN-UZ96U1;km8WmU2Vc zuYg(SAm5ix`o7t;N}B5`5mg?I@9R9gaK)LyG73T*u?I%N?5ez*s&ORuVuJ@syIQK{ zw47lLUfz%Jx8SQUOju~<{uLhTTP8>L0Z2pl_zvyoX;B$me&B4jn=i`p{;FpBjTA`o JLG7qc>o1k=i4Fh& literal 0 HcmV?d00001 diff --git a/fuel_health/tests/smoke/test_create_volume.pyc b/fuel_health/tests/smoke/test_create_volume.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b42935c9981cd9d64cccb72c41ddbf3611ef64d3 GIT binary patch literal 3244 zcmcImOK;mo5MGjc_#wqkoWxO(1B)W44z`3|ilPXLCQc72TDN7~1Tk6=6nAA)=0oAG zl)8{l>8by+zo9>%{brVwqBcQKw$1hK%{AIJ9;}>Wa)0r=DGVB5jDQDNdVMH-u`6NlT0!A)DfNA>In{>a;CnOFZwl zp)vUzKYa%?vx%XMavA1PrYxxeQe;fIT8$#D%r?j`igcDKeWJ8kVkPk>`1Cgzlpu&e zcGBXV96^4{|KM{1B1bz zBNjNp6%*1S94satk-`RzlO|!nxy!R~%3I<6?20Q#T)8aMAZINg(-u8owLDsHh({Hf z6t-DrL-c5|A><|>vq{!I?{5LlF~cQC>RVVA+I$)sxau&;wTbdr8IpPvB_^EZCP_^T z%g0A2&t81Z_Ylb}$$yBnHXC3}F?myz(zsY8vXYRc(i%F+7jrq{b4?QqJ)5dBATpnV z3;St$l#;R=#8u^7l{$>mMCFDLuBKgZ<5ERNg;t2=(?pvvlJ#j6C6*fk$x2}@!V0CD zC$Z`?1RCO0vqOM*$^uqHA1uLxKE`Z#USw)G8&1n&qGF?mEf5;sE(y0Na%eG?};P6R1!R9 zg937s^)Ahfipr_op4?ta;#i!+`+Ks(I%Su$azos`f@A{o-4ea0zq}GxK#e0oSfX8^ z!rl-)xwkaV!UAe=Zi92@U5-7JSa-qNXV&Xy&dbW;oppf|?t_(MQ;Fvvtt)98{L5Es4-+GS)S!@*l*)0t5LRZjgFgKa^6 zqW!!uHP(UuZBblkKTR%_uTfCUd6J)z(5OT@5O)8$Daz7$PjEx9o0c8sowi~*h6*HlP%^#@sUsA*M#sS| z&$Mk0c6$3gQlmm%ng<_XgmIA@>S?5(d+WF;!^$kHpD!jL=Np1$jjBZ0dp11Fnd11X zjpjajrc5Qtdu`;eQz-l^N}p;jYtt$nvt4rz?BF9X0`4^w4;CKdVrjOJLVR_**V;=A zbw|q33U}2jYA`NK#CQQXYb71d-vXR&)hWs*zSFF|M%|`RehTH{RUtA zBZd@zfy$K{`*}m>pPA$y)0roAp9{>Y}+?<4{Z`!~wr8 zeE0CRA%;`r*pGplHPk7_raEn?v!>wTxnyqC=Nb1J54qT_tajPllq)Bqq?|8S&gdl1 zOyQh_+AI-R>l!$brF~j;RAEg%aYTxh4Sp&b`w%J_>nBfkX2Avpz6!?hban#Lmk@BXcd;(y@Tb4i_ix4pi#nICFYZF10tV{j0o=B}>=T{Y{0NLnu;gvx7`1)kbcr)_lxV&cNKXoi)ZN>SUJ zSO{d{HSS8gexoBGGjPk#8$G6No{aG-x3PZ7QAVK~Sd(2&KW1y@_#+&?-{{31=k4HN=JsC>xbWaroaD>ofKj zpv2%;if!~Z*BG7X9tToi^ezX2qt8J2q{<_nu8y(Ep&Cfk^-JT~Qpl9u4em*@>qr zJ-=eZIz2UAd7>g|;SVv#_0}M1`QURD_5$aCmukY<6snS~!ZTeVt>*cKNQlJdV?a*6u#maH(&7{ z|314ciik@-&#d2wSA6syhjrTNmQOpe;%K0D+*2N3>Z1Cp6OhvPO+(e%cU2+E z^yYK=%iE90*^v^zj`F@$6}pr-Nt@`F68{<#=2H4wNqwNu$>6Fxg9xdvtCq!%#~NjX z6|Ow#hN;Xxz#y&Wzcgv+j>9^Vb&FV-V}I=oN5TQohfor|&q3O1#u@}$wK(i5B?r;R zkguByp;X7atkz#0Kr;s6)s-!y&)Zbjb|29P;zl)lty|5VrtptknOZ#8S}q-}=ViLe z4IbGYX`Pmd)^e$MP)Z0S7<|=efMNYAGP{DtF=8HB7?y?6+2}O7?QXMsv%A^d?o%$# z=H+yXe;V8e5U@|J`qCk;<#|~QS1!x#FpXWTWh&(BSbY~Z`|OgNk=>_IXqFMlJz{s} ncn>_AOtK`4^F6sji7WB$>VqK3`qHQ8D}qq+xz#`wA)kK(31VX) literal 0 HcmV?d00001 diff --git a/fuel_health/tests/smoke/test_nova_create_instance_with_connectivity.pyc b/fuel_health/tests/smoke/test_nova_create_instance_with_connectivity.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7925a9328e030e5ac98f24f1b326ea84e2de1e0 GIT binary patch literal 7798 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 Date: Mon, 15 Jul 2013 16:08:38 +0300 Subject: [PATCH 2/4] nailgun config with identity and network opts --- .gitignore | 3 +- fuel_health/__init__.pyc | Bin 143 -> 0 bytes fuel_health/common/__init__.pyc | Bin 150 -> 0 bytes fuel_health/common/log.pyc | Bin 4130 -> 0 bytes fuel_health/common/rest_client.pyc | Bin 15277 -> 0 bytes fuel_health/common/ssh.pyc | Bin 5170 -> 0 bytes fuel_health/common/test_mixins.pyc | Bin 4079 -> 0 bytes fuel_health/common/utils/__init__.pyc | Bin 372 -> 0 bytes fuel_health/common/utils/data_utils.pyc | Bin 2009 -> 0 bytes fuel_health/common/utils/misc.pyc | Bin 639 -> 0 bytes fuel_health/config.py | 220 +++++++++++++++++++----- 11 files changed, 176 insertions(+), 47 deletions(-) delete mode 100644 fuel_health/__init__.pyc delete mode 100644 fuel_health/common/__init__.pyc delete mode 100644 fuel_health/common/log.pyc delete mode 100644 fuel_health/common/rest_client.pyc delete mode 100644 fuel_health/common/ssh.pyc delete mode 100644 fuel_health/common/test_mixins.pyc delete mode 100644 fuel_health/common/utils/__init__.pyc delete mode 100644 fuel_health/common/utils/data_utils.pyc delete mode 100644 fuel_health/common/utils/misc.pyc diff --git a/.gitignore b/.gitignore index 45977d04..a55eb57d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea *.egg-info -dist \ No newline at end of file +dist +*.pyc \ No newline at end of file diff --git a/fuel_health/__init__.pyc b/fuel_health/__init__.pyc deleted file mode 100644 index 07453f40f38240be9902f0a754bb2151f8cf4fe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143 zcmZSn%*!RE`YPO2Tq JieeyU002MiA7TIi diff --git a/fuel_health/common/__init__.pyc b/fuel_health/common/__init__.pyc deleted file mode 100644 index 0062379d17976d9a6586564999b4f34282c2a9d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 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 TUJ7m(5z^MK)>jZ2YxVyE5>0io diff --git a/fuel_health/common/test_mixins.pyc b/fuel_health/common/test_mixins.pyc deleted file mode 100644 index 31622eb4ccb4ead40925d5d0c30c0cff45ecf50d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4079 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 diff --git a/fuel_health/common/utils/data_utils.pyc b/fuel_health/common/utils/data_utils.pyc deleted file mode 100644 index e150def96b00f68ca6c23dc5b37e60ca738378c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2009 zcmcIl+iD|65Un0vt+ny)lEjd}GUUSQVJ)%j!@?4BTi6f?f{aNXgh7mETAo&BdX(-S zvko$W*q@N!$Oq*i5BY|CKys?amLbpac&2o!yQ{0K`c%2|_rd7tCx3mH(aqDt?-%&| z6-16#QAsr4VMTLwJ08(Iy2TxucLYaNcB$&oyhkd>P?xS@)2F;gIplz@VK(4>+gI;V zKBVg|%}102V|*lQ9xy%`KfpQ6KX_(i1sFyU`fa8+!PM4!R%;)gFM{^rIO8S!aTu@h z`S&5VFvF{8jpJhfh_3J|IyxD5Fg-JD!9IQwJ@B9pF7)y1Qk&OR7~DW(Lwk%a25egC zF@8ye{~Bmo)Rmq#(~YawItzZfYIJ#w1FnwwfUUkLbXtaDn$=ZR+i4R_>8E)b(uKgu z<|6E2FLu3P9~^^^AV?XOa@33m_~X+`s1E@U=UQ>VTg5@1$YEz=UYCgA)uIMYkq@a0 z60f%TJ%z#-D4`&C3zI)#w|o>*87G({-G%Tc6x`5d|2B|5Z95!@d%@RsIiL{H8m#Kj zc0gC8epO@(Udkx#YhJ^I4;i=0!yYqE2X1@9_A--x%na82fvC}^_ z;70s?@@>3wbrqkPb8X`Sta%o1YR57SMGQIsI1nOe=O>;yd48IoPEK?G6!-^>q9$Tr z)D5<_b%>WbHa07pT;~9?%|y6dY46iB?T4@{LfH6M)2VF83NVU==#|J8e?A+tKcpYG zsf9dM8nPmRPT?JhZ|r$mn*4QbSLUp7Dc5Jh{%R)mQIEeRU9xqJ8y9i3B>pH&X9KhEuXDURI=dp96rG{!sWYtOnuN$c?lumf$>! zTB;ir0noNDzl7;1#*^sKINZPaS;tucresW%mQ%|Vi3<8H$mH}!<96(sux~d3f~<@+ zL6;Y@n_0zHYcOXb>VG;d8Vwo=A78F!U8A}=DX@2;u1hZ$WqfI}mMz&uR_eC%uoWLt z40itS>87|VrfzA1OWnl+Z5@Gg{dsOa)a$D~HQonGxG}Xo@_^AJ2w@?2@SBb;WKXzp zCR{j)bX->7q@~x%2R!x>#9b(Y{@4Eu?D*5F&YMzy_88c+*jMrwJ?!jv4?)7iC;tLB CbJh*S_yJ*;pc#&V zhiZ#;9WNGPdtAB>iA;9p9xUwjov8=ec*P3YkTfXQ&6oJnYky znF$TY35D1u0C6A=#h;Qf%Nw(%e>v`}3mX!{uU&04cvo+)mJ+q2qpeZBpfRstrGUvd SxrrT`H_ZLCvgW+zW`ZByb(3KL diff --git a/fuel_health/config.py b/fuel_health/config.py index cc7cb302..17f57515 100644 --- a/fuel_health/config.py +++ b/fuel_health/config.py @@ -22,6 +22,7 @@ from oslo.config import cfg from fuel_health.common import log as logging from fuel_health.common.utils.misc import singleton +import requests LOG = logging.getLogger(__name__) @@ -184,11 +185,11 @@ ComputeGroup = [ default=[], help="If false, skip config tests regardless of the " "extension status"), - cfg.StrOpt('controller_node', - default='127.0.0.1', + cfg.ListOpt('controller_nodes', + default=['127.0.0.1'], help="IP address of one of the controller nodes"), - cfg.StrOpt('controller_node_name', - default='', + cfg.ListOpt('controller_nodes_name', + default=[''], help="DNS name of one of the controller nodes"), cfg.StrOpt('controller_node_ssh_user', default='ssh_user', @@ -575,64 +576,191 @@ class FuelConfig(object): class ConfigGroup(object): # USE SLOTS - def __init__(self, opts): - self.parse_opts(opts) + def __init__(self, opts): + self.parse_opts(opts) - def parse_opts(self, opts): - for opt in opts: - name = opt.name - self.__dict__[name] = opt.default + def parse_opts(self, opts): + for opt in opts: + name = opt.name + self.__dict__[name] = opt.default - def __setattr__(self, key, value): - self.__dict__[key] = value + def __setattr__(self, key, value): + self.__dict__[key] = value - def __getitem__(self, key): - return self.__dict__[key] + def __getitem__(self, key): + return self.__dict__[key] - def __setitem(self, key, value): - self.__dict__[key] = value + def __setitem(self, key, value): + self.__dict__[key] = value - def __repr__(self): - return u"{0} WITH {1}".format( - self.__class__.__name__, - self.__dict__) + def __repr__(self): + return u"{0} WITH {1}".format( + self.__class__.__name__, + self.__dict__) @process_singleton class NailgunConfig(object): - identity = ConfigGroup(IdentityGroup) - compute = ConfigGroup(ComputeGroup) - smoke = ConfigGroup(SmokeGroup) - orchestration = ConfigGroup(OrchestrationGroup) - compute_admin = ConfigGroup(ComputeAdminGroup) - image = ConfigGroup(ImageGroup) - network = ConfigGroup(NetworkGroup) - volume = ConfigGroup(VolumeGroup) - object_storage = ConfigGroup(ObjectStoreConfig) + identity = ConfigGroup(IdentityGroup) + compute = ConfigGroup(ComputeGroup) + smoke = ConfigGroup(SmokeGroup) + orchestration = ConfigGroup(OrchestrationGroup) + compute_admin = ConfigGroup(ComputeAdminGroup) + image = ConfigGroup(ImageGroup) + network = ConfigGroup(NetworkGroup) + volume = ConfigGroup(VolumeGroup) + object_storage = ConfigGroup(ObjectStoreConfig) + def __init__(self, parse=True): + self.nailgun_host = os.environ.get('NAILGUN_HOST', None) + self.nailgun_port = os.environ.get('NAILGUN_PORT', None) + self.nailgun_url = 'http://{0}:{1}'.format(self.nailgun_host, + self.nailgun_port) + self.cluster_id = os.environ.get('CLUSTER_ID', None) + if parse: + self.prepare_config() - def __init__(self, *args, **kwargs): - self.prepare_config(*args, **kwargs) + def prepare_config(self, *args, **kwargs): + for interface in dir(self): + if interface.startswith('_parse'): + method = getattr(self, interface) + if callable(method): + method() - def prepare_config(self, *args, **kwargs): - for interface in dir(self): - if interface.startswith('_parse') : - method = getattr(self, interface) - if callable(method): - method(*args, **kwargs) + def _parse_ostf(self): + """ + RESPONSE FORMAT + { + "controller_nodes_ips": [ + "10.20.0.129" + ], + "horizon_url": "http://240.0.1.2/", + "controller_nodes_names": [ + "controller-1.example.com" + ], + "keystone_url": "http://240.0.1.2:5000/", + "admin_tenant_name": "admin", + "admin_username": "admin", + "admin_password": "admin" + } + """ + api_url = '/api/%s/ostf/' % self.cluster_id + response = requests.get(self.nailgun_url+api_url) + if response.status_code == 404: + LOG.warning('URL %s is not implemented ' + 'in nailgun api' % api_url) + elif response.status_code == 200: + data = response.json() + self.identity.url = data['horizon_url'] + self.identity.uri = data['keystone_url'] + self.identity.admin_tenant_name = data['admin_tenant_name'] + self.identity.admin_tenant_name = data['admin_username'] + self.identity.admin_tenant_name = data['admin_password'] + self.identity.controller_nodes = data['controller_nodes_ips'] + self.identity.controller_nodes_name = \ + data['controller_nodes_names'] - def _parse_identity(self, *args, **kwargs): - pass - - def _parse_smoke(self, *args, **kwargs): - pass - - def _parse_all(self, *args, **kwargs): - pass + def _parse_networks_configuration(self): + """ + { + "net_manager": "FlatDHCPManager", + "networks": [ + { + "network_size": 256, + "name": "floating", + "ip_ranges": [ + [ + "172.18.8.42", + "172.18.8.47" + ] + ], + "amount": 1, + "id": 27, + "netmask": "255.255.255.0", + "cluster_id": 6, + "vlan_start": 522, + "cidr": "240.0.0.0/24", + "gateway": "240.0.0.1" + }, + { + "network_size": 256, + "name": "management", + "ip_ranges": [ + [ + "192.168.0.2", + "192.168.0.254" + ] + ], + "amount": 1, + "id": 29, + "netmask": "255.255.255.0", + "cluster_id": 6, + "vlan_start": 101, + "cidr": "192.168.0.0/24", + "gateway": "192.168.0.1" + }, + { + "network_size": 256, + "name": "storage", + "ip_ranges": [ + [ + "172.16.0.2", + "172.16.0.254" + ] + ], + "amount": 1, + "id": 30, + "netmask": "255.255.255.0", + "cluster_id": 6, + "vlan_start": 102, + "cidr": "172.16.0.0/24", + "gateway": "172.16.0.1" + }, + { + "network_size": 256, + "name": "fixed", + "ip_ranges": [ + [ + "10.0.0.2", + "10.0.0.254" + ] + ], + "amount": 1, + "id": 31, + "netmask": "255.255.255.0", + "cluster_id": 6, + "vlan_start": 103, + "cidr": "10.0.0.0/24", + "gateway": "10.0.0.1" + }, + { + "network_size": 256, + "name": "public", + "ip_ranges": [ + [ + "172.18.8.50", + "172.18.8.59" + ] + ], + "amount": 1, + "id": 28, + "netmask": "255.255.255.224", + "cluster_id": 6, + "vlan_start": 522, + "cidr": "240.0.1.0/24", + "gateway": "172.18.8.33" + } + ] +} + """ + api_url = '/api/clusters/%s/network_configuration/' % self.cluster_id + data = requests.get(self.nailgun_url+api_url).json() + self.network.raw_data = data def Config(): - if 'NAILGUN_HOST' in os.environ: + if all(item in os.environ for item in + ('NAILGUN_HOST', 'NAILGUN_PORT', 'CLUSTER_ID')): return NailgunConfig() return FuelConfig() \ No newline at end of file From b6c566019579b99d8765d216bcdb9f51d3ebfae7 Mon Sep 17 00:00:00 2001 From: anaboikina Date: Mon, 15 Jul 2013 16:20:35 +0300 Subject: [PATCH 3/4] Removed unnecessary params from OSTF configuration. --- fuel_health/clients.py | 16 ---- fuel_health/config.py | 149 +------------------------------- fuel_health/etc/test.conf | 103 +--------------------- fuel_health/tests/smoke/base.py | 8 +- 4 files changed, 7 insertions(+), 269 deletions(-) diff --git a/fuel_health/clients.py b/fuel_health/clients.py index 9f0fb18c..8a409593 100644 --- a/fuel_health/clients.py +++ b/fuel_health/clients.py @@ -242,19 +242,3 @@ class AdminManager(Manager): conf.identity.admin_password, conf.identity.admin_tenant_name, interface=interface) - - -class ComputeAdminManager(Manager): - - """ - Manager object that uses the compute_admin credentials for its - managed client objects - """ - - def __init__(self, interface='json'): - conf = config.FuelConfig() - base = super(ComputeAdminManager, self) - base.__init__(conf.compute_admin.username, - conf.compute_admin.password, - conf.compute_admin.tenant_name, - interface=interface) diff --git a/fuel_health/config.py b/fuel_health/config.py index 4988f55e..58bbab4e 100644 --- a/fuel_health/config.py +++ b/fuel_health/config.py @@ -200,17 +200,11 @@ ComputeGroup = [ default='', help="path to ssh key"), cfg.StrOpt('image_name', - default="{$IMAGE_ID}", - help="Valid secondary image reference to be used in tests."), - cfg.StrOpt('image_ref_alt', - default="{$IMAGE_ID_ALT}", + default="cirros-0.3.0-x86_64", help="Valid secondary image reference to be used in tests."), cfg.IntOpt('flavor_ref', default=1, - help="Valid primary flavor to use in tests."), - cfg.IntOpt('flavor_ref_alt', - default=2, - help='Valid secondary flavor to be used in tests.'), + help="Valid primary flavor to use in tests.") ] @@ -220,28 +214,6 @@ def register_compute_opts(conf): for opt in ComputeGroup: conf.register_opt(opt, group='compute') -compute_admin_group = cfg.OptGroup(name='compute-admin', - title="Compute Admin Options") - -ComputeAdminGroup = [ - cfg.StrOpt('username', - default='admin', - help="Administrative Username to use for Nova API requests."), - cfg.StrOpt('tenant_name', - default='admin', - help="Administrative Tenant name to use for Nova API " - "requests."), - cfg.StrOpt('password', - default='pass', - help="API key to use when authenticating as admin.", - secret=True), -] - - -def register_compute_admin_opts(conf): - conf.register_group(compute_admin_group) - for opt in ComputeAdminGroup: - conf.register_opt(opt, group='compute-admin') image_group = cfg.OptGroup(name='image', title="Image Service Options") @@ -393,115 +365,6 @@ OrchestrationGroup = [ help="Name of existing keypair to launch servers with."), ] - -smoke_group = cfg.OptGroup(name='smoke', - title='Smoke Tests Options') - -SmokeGroup = [ - cfg.BoolOpt('allow_tenant_isolation', - default=False, - help="Allows test cases to create/destroy tenants and " - "users. This option enables isolated test cases and " - "better parallel execution, but also requires that " - "OpenStack Identity API admin credentials are known."), - cfg.BoolOpt('allow_tenant_reuse', - default=True, - help="If allow_tenant_isolation is True and a tenant that " - "would be created for a given test already exists (such " - "as from a previously-failed run), re-use that tenant " - "instead of failing because of the conflict. Note that " - "this would result in the tenant being deleted at the " - "end of a subsequent successful run."), - cfg.StrOpt('image_ref', - default="{$IMAGE_ID}", - help="Valid secondary image reference to be used in tests."), - cfg.StrOpt('image_ref_alt', - default="{$IMAGE_ID_ALT}", - help="Valid secondary image reference to be used in tests."), - cfg.IntOpt('flavor_ref', - default=1, - help="Valid primary flavor to use in tests."), - cfg.IntOpt('flavor_ref_alt', - default=2, - help='Valid secondary flavor to be used in tests.'), - cfg.StrOpt('image_ssh_user', - default="root", - help="User name used to authenticate to an instance."), - cfg.StrOpt('image_alt_ssh_user', - default="root", - help="User name used to authenticate to an instance using " - "the alternate image."), - cfg.BoolOpt('resize_available', - default=False, - help="Does the test environment support resizing?"), - cfg.BoolOpt('live_migration_available', - default=False, - help="Does the test environment support live migration " - "available?"), - cfg.BoolOpt('use_block_migration_for_live_migration', - default=False, - help="Does the test environment use block devices for live " - "migration"), - cfg.BoolOpt('block_migrate_supports_cinder_iscsi', - default=False, - help="Does the test environment block migration support " - "cinder iSCSI volumes"), - cfg.BoolOpt('change_password_available', - default=False, - help="Does the test environment support changing the admin " - "password?"), - cfg.BoolOpt('create_image_enabled', - default=False, - help="Does the test environment support snapshots?"), - cfg.IntOpt('build_interval', - default=10, - help="Time in seconds between build status checks."), - cfg.IntOpt('build_timeout', - default=300, - help="Timeout in seconds to wait for an instance to build."), - cfg.BoolOpt('run_ssh', - default=False, - help="Does the test environment support snapshots?"), - cfg.StrOpt('ssh_user', - default='root', - help="User name used to authenticate to an instance."), - cfg.IntOpt('ssh_timeout', - default=300, - help="Timeout in seconds to wait for authentication to " - "succeed."), - cfg.IntOpt('ssh_channel_timeout', - default=60, - help="Timeout in seconds to wait for output from ssh " - "channel."), - cfg.StrOpt('fixed_network_name', - default='private', - help="Visible fixed network name "), - cfg.StrOpt('network_for_ssh', - default='public', - help="Network used for SSH connections."), - cfg.IntOpt('ip_version_for_ssh', - default=4, - help="IP version used for SSH connections."), - cfg.StrOpt('catalog_type', - default='compute', - help="Catalog type of the Compute service."), - cfg.StrOpt('path_to_private_key', - default=None, - help="Path to a private key file for SSH access to remote " - "hosts"), - cfg.BoolOpt('disk_config_enabled_override', - default=True, - help="If false, skip config tests regardless of the " - "extension status"), -] - - -def register_smoke_opts(conf): - conf.register_group(smoke_group) - for opt in SmokeGroup: - conf.register_opt(opt, group='smoke') - - class Singleton(object): _instances = {} @@ -560,15 +423,7 @@ class FuelConfig(Singleton): register_identity_opts(cfg.CONF) register_network_opts(cfg.CONF) register_volume_opts(cfg.CONF) - register_compute_admin_opts(cfg.CONF) - register_smoke_opts(cfg.CONF) self.compute = cfg.CONF.compute self.identity = cfg.CONF.identity self.network = cfg.CONF.network self.volume = cfg.CONF.volume - self.compute_admin = cfg.CONF['compute-admin'] - self.smoke = cfg.CONF.smoke - if not self.compute_admin.username: - self.compute_admin.username = self.identity.admin_username - self.compute_admin.password = self.identity.admin_password - self.compute_admin.tenant_name = self.identity.admin_tenant_name diff --git a/fuel_health/etc/test.conf b/fuel_health/etc/test.conf index 32296011..1007818a 100644 --- a/fuel_health/etc/test.conf +++ b/fuel_health/etc/test.conf @@ -75,9 +75,7 @@ allow_tenant_reuse = true # Reference data for tests. The ref and ref_alt should be # distinct images/flavors. image_name = TestVM -image_ref_alt = 53734a0d-60a8-4689-b7c8-3c14917a7197 flavor_ref = 1 -flavor_ref_alt = 2 # User names used to authenticate to an instance for a given image. image_ssh_user = cirros @@ -146,15 +144,6 @@ block_migrate_supports_cinder_iscsi = false # are forced to skip, regardless of the extension status disk_config_enabled_override = true -[compute-admin] -# This should be the username of a user WITH administrative privileges -# If not defined the admin user from the identity section will be used -username = -# The above administrative user's password -password = -# The above administrative user's tenant name -tenant_name = - [image] # This section contains configuration options used when executing tests # against the OpenStack Images API @@ -239,94 +228,4 @@ catalog_type = object-store container_sync_timeout = 120 # Number of seconds to wait while looping to check the status of a # container to container synchronization -container_sync_interval = 5 - -[smoke] -# This section contains configuration options used when executing tests -# against the OpenStack Compute API. - -# Allows test cases to create/destroy tenants and users. This option -# enables isolated test cases and better parallel execution, -# but also requires that OpenStack Identity API admin credentials -# are known. -allow_tenant_isolation = True - -# Allows test cases to create/destroy tenants and users. This option -# enables isolated test cases and better parallel execution, -# but also requires that OpenStack Identity API admin credentials -# are known. -allow_tenant_reuse = true - -# Reference data for tests. The ref and ref_alt should be -# distinct images/flavors. -image_name = TestVM -image_ref_alt = 53734a0d-60a8-4689-b7c8-3c14917a7197 -flavor_ref = 1 -flavor_ref_alt = 2 - -# User names used to authenticate to an instance for a given image. -image_ssh_user = cirros -image_alt_ssh_user = cirros - -# Number of seconds to wait while looping to check the status of an -# instance that is building. -build_interval = 3 - -# Number of seconds to time out on waiting for an instance -# to build or reach an expected status -build_timeout = 300 - -# Run additional tests that use SSH for instance validation? -# This requires the instances be routable from the host -# executing the tests -run_ssh = false - -# Name of a user used to authenticated to an instance -ssh_user = cirros - -# Visible fixed network name -fixed_network_name = net04 - -# Network id used for SSH (public, private, etc) -network_for_ssh = net04 - -# IP version of the address used for SSH -ip_version_for_ssh = 4 - -# Number of seconds to wait to authenticate to an instance -ssh_timeout = 320 - -# Number of seconds to wait for output from ssh channel -ssh_channel_timeout = 60 - -# The type of endpoint for a Compute API service. Unless you have a -# custom Keystone service catalog implementation, you probably want to leave -# this value as "compute" -catalog_type = compute - -# Does the Compute API support creation of images? -create_image_enabled = true - -# For resize to work with libvirt/kvm, one of the following must be true: -# Single node: allow_resize_to_same_host=True must be set in nova.conf -# Cluster: the 'nova' user must have scp access between cluster nodes -resize_available = true - -# Does the compute API support changing the admin password? -change_password_available=False - -# Run live migration tests (requires 2 hosts) -live_migration_available = False - -# Use block live migration (Otherwise, non-block migration will be -# performed, which requires XenServer pools in case of using XS) -use_block_migration_for_live_migration = False - -# Supports iSCSI block migration - depends on a XAPI supporting -# relax-xsm-sr-check -block_migrate_supports_cinder_iscsi = false - -# By default, rely on the status of the diskConfig extension to -# decide if to execute disk config tests. When set to false, tests -# are forced to skip, regardless of the extension status -disk_config_enabled_override = true \ No newline at end of file +container_sync_interval = 5 \ No newline at end of file diff --git a/fuel_health/tests/smoke/base.py b/fuel_health/tests/smoke/base.py index f24c91dc..451c4a32 100644 --- a/fuel_health/tests/smoke/base.py +++ b/fuel_health/tests/smoke/base.py @@ -126,9 +126,9 @@ class BaseComputeAdminTest(BaseComputeTest): @classmethod def setUpClass(cls): super(BaseComputeAdminTest, cls).setUpClass() - admin_username = cls.config.compute_admin.username - admin_password = cls.config.compute_admin.password - admin_tenant = cls.config.compute_admin.tenant_name + admin_username = cls.config.identity.admin_username + admin_password = cls.config.identity.admin_password + admin_tenant = cls.config.identity.admin_tenant_name cls.flavors = [] if not (admin_username and admin_password and admin_tenant): @@ -136,7 +136,7 @@ class BaseComputeAdminTest(BaseComputeTest): "in configuration.") raise cls.skipException(msg) - cls.os_adm = clients.ComputeAdminManager(interface=cls._interface) + cls.os_adm = clients.AdminManager(interface=cls._interface) @classmethod def create_flavor(cls, **kwargs): From fa077d4de81da1a772438e90a83096910307f641 Mon Sep 17 00:00:00 2001 From: Dmitry Shulyak Date: Mon, 15 Jul 2013 18:34:44 +0300 Subject: [PATCH 4/4] small fabric for fuel config --- fuel_health/config.py | 13 +++++-------- fuel_health/test.py | 5 ++++- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/fuel_health/config.py b/fuel_health/config.py index be0a19bf..7e9a745a 100644 --- a/fuel_health/config.py +++ b/fuel_health/config.py @@ -36,7 +36,7 @@ IdentityGroup = [ default=False, help="Set to True if using self-signed SSL certificates."), cfg.StrOpt('uri', - default=None, + default='http://10.0.0.2/', help="Full URI of the OpenStack Identity API (Keystone), v2"), cfg.StrOpt('url', default='http://10.0.0.1/', @@ -380,7 +380,7 @@ def process_singleton(cls): @process_singleton -class FuelConfig(object): +class FileConfig(object): """Provides OpenStack configuration information.""" DEFAULT_CONFIG_DIR = os.path.join(os.path.abspath( @@ -429,10 +429,6 @@ class FuelConfig(object): self.identity = cfg.CONF.identity self.network = cfg.CONF.network self.volume = cfg.CONF.volume - if not self.compute_admin.username: - self.compute_admin.username = self.identity.admin_username - self.compute_admin.password = self.identity.admin_password - self.compute_admin.tenant_name = self.identity.admin_tenant_name class ConfigGroup(object): @@ -473,6 +469,7 @@ class NailgunConfig(object): object_storage = ConfigGroup(ObjectStoreConfig) def __init__(self, parse=True): + LOG.info('INITIALIZING NAILGUN CONFIG') self.nailgun_host = os.environ.get('NAILGUN_HOST', None) self.nailgun_port = os.environ.get('NAILGUN_PORT', None) self.nailgun_url = 'http://{0}:{1}'.format(self.nailgun_host, @@ -619,8 +616,8 @@ class NailgunConfig(object): self.network.raw_data = data -def Config(): +def FuelConfig(): if all(item in os.environ for item in ('NAILGUN_HOST', 'NAILGUN_PORT', 'CLUSTER_ID')): return NailgunConfig() - return FuelConfig() + return FileConfig() diff --git a/fuel_health/test.py b/fuel_health/test.py index 5f408876..6b5abaf3 100644 --- a/fuel_health/test.py +++ b/fuel_health/test.py @@ -104,7 +104,10 @@ class BaseTestCase(testtools.TestCase, testresources.ResourcedTestCase, FuelTestAssertMixin): - config = config.Config() + config = config.FuelConfig() + + def __init__(self, *args, **kwargs): + super(BaseTestCase, self).__init__(*args, **kwargs) @classmethod def setUpClass(cls):