Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
python3-dmapi-el9 / usr / lib / python3.9 / site-packages / dmapi / __pycache__ / test.cpython-39.pyc
Size: Mime:
a

ىgbqã@sêdZddlZejddddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlm Z ddl!mZ"dd
l#m$Z$ddl%Z%ddl&Z&ddl'm(Z(ddl'm)Z)ddl'm*Z*ddl+m,Z-ddl.m/Z/ddl'm0Z0ddl1m2Z3ddl4mZ5ddl6m7Z7ddl6m8Z8ddl4m9Z:ddl'm;Z;ddl<m=Z=ej>Z>e ?e>¡e> @dd¡e Ae>d¡e Be>¡dZCdZDe%jErÞejFZFnejGdd „ƒZFGd!d"„d"ejHƒZIGd#d$„d$eJƒZKGd%d&„d&eLƒZMd'd(„ZNeNƒGd)d*„d*eLƒZOeO P¡Gd+d,„d,e&jQƒZQGd-d.„d.eLƒZRe% SejT¡Gd/d0„d0e&jQƒƒZUGd1d2„d2ejHƒZVGd3d4„d4eQƒZWGd5d6„d6eWƒZXGd7d8„d8eLƒZYGd9d:„d:eLƒZZGd;d<„d<eLƒZ[dS)=z{Base classes for our unit tests.

Allows overriding of flags for use of fakes, and some black magic for
inline callbacks.

éNF)Úos)Úcore)Ú	lockutils)Úcfg)Úfixture)Ú
logging_error)Úlog)Ú	jsonutils)Ú	timeutils)Ú
moxstubout)Úcontext)Údb)Ú	exception)Úmanager)Úopenstack_driver)Úobjects)Úbase)Úfixtures)Úconf_fixture)Úpolicy_fixture)Úuuidsentinel)Úutils)ÚimagesZ
use_stderrÚnova)ÚTrueÚtrueÚ1ZyesZcell1c's@t ¡$‰‡fdd„|DƒVWdƒn1s20YdS)Ncsg|]}ˆ |¡‘qS©)Ú
enter_context)Ú.0Úc©Ústackrú./usr/lib/python3.9/site-packages/dmapi/test.pyÚ
<listcomp>Góznested.<locals>.<listcomp>)Ú
contextlibÚ	ExitStack)Zcontextsrr!r#ÚnestedDs
r(cs*eZdZdZddd„Z‡fdd„Z‡ZS)ÚSampleNetworksz'Create sample networks in the database.NcCs
||_dS©N©Úhost)Úselfr,rrr#Ú__init__NszSampleNetworks.__init__csŠtt|ƒ ¡t ¡}tj|jd}tj	p.tj
}|j|ddtjtj
tjtjtjtjtj|tjtjtjdt |¡D]}| ||¡qtdS)Nr+Útestz
10.0.0.0/8)
ZlabelZcidrÚ
multi_hostÚnum_networksÚnetwork_sizeZcidr_v6ÚgatewayÚ
gateway_v6ZbridgeÚbridge_interfaceÚ	vpn_startÚ
vlan_startZdns1)Úsuperr)ÚsetUprZget_admin_contextÚnetwork_managerZVlanManagerr,ÚCONFZflat_interfaceZvlan_interfaceZcreate_networksr0r1r2Zfixed_range_v6r3r4Zflat_network_bridger6r7Zflat_network_dnsr
Znetwork_get_allZset_network_host)r-ÚctxtZnetworkr5Znet©Ú	__class__rr#r9Qs*ózSampleNetworks.setUp)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.r9Ú
__classcell__rrr=r#r)Js
r)c@seZdZdS)ÚTestingExceptionN)r?r@rArrrr#rDhsrDc@seZdZdd„Zdd„ZdS)ÚskipIfcCs||_||_dSr*)Ú	conditionÚreason)r-rFrGrrr#r.mszskipIf.__init__csx|j‰|j‰t ˆ¡r4t ˆ¡‡‡‡fdd„ƒ}|St ˆ¡rltˆdƒ‰t ˆ¡‡‡‡fdd„ƒ}|ˆ_ˆSt	dƒ‚dS)Ncsˆrtj ˆ¡‚ˆ|i|¤ŽSr*©Ú	testtoolsÚTestCaseZ
skipException)ÚargsÚkwargs)rFÚfunc_or_clsrGrr#Úwrappedusz skipIf.__call__.<locals>.wrappedr9cs*ˆrtj ˆ¡‚ˆ|g|¢Ri|¤ŽdSr*rH)r-rKrL)rFÚ	orig_funcrGrr#Únew_funcsz!skipIf.__call__.<locals>.new_funcz5skipUnless can be used only with functions or classes)
rFrGÚinspectÚ
isfunctionÚsixÚwrapsZisclassÚgetattrr9Ú	TypeError)r-rMrNrPr)rFrMrOrGr#Ú__call__qs


zskipIf.__call__N)r?r@rAr.rWrrrr#rElsrEcCsdd„}|tjjƒtj_dS)Ncs‡fdd„}|S)Ncs0gd¢}| d¡r&||vr&td|ƒ‚ˆ||ƒS)N)Zassert_called_withZassert_called_once_withZassert_has_callsZassert_any_callsÚassertz$%s is not a valid mock assert method)Ú
startswithÚAttributeError)Z_selfÚnameZ
valid_asserts©rNrr#ÚwrapperŽsÿzf_patch_mock_to_raise_for_invalid_assert_calls.<locals>.raise_for_invalid_assert_calls.<locals>.wrapperr)rNr]rr\r#Úraise_for_invalid_assert_callsszU_patch_mock_to_raise_for_invalid_assert_calls.<locals>.raise_for_invalid_assert_calls)ÚmockZMockÚ__getattr__)r^rrr#Ú-_patch_mock_to_raise_for_invalid_assert_callsŒsÿrac@s,eZdZejjZedd„ƒZe	dd„ƒZ
dS)ÚNovaExceptionReraiseFormatErrorcCs|jtj_dSr*)Ú_wrap_log_exceptionrÚ
NovaExceptionÚ_log_exception©Úclsrrr#Úpatch¦sz%NovaExceptionReraiseFormatError.patchcCs t ¡}t |¡tj|ŽdSr*)ÚsysÚexc_inforbÚreal_log_exceptionrSZreraise)r-rjrrr#rcªs
z3NovaExceptionReraiseFormatError._wrap_log_exceptionN)r?r@rArrdrerkÚclassmethodrhÚstaticmethodrcrrrr#rb£s

rbcs„eZdZdZdZdZdZdZdZdZ	‡fdd„Z
dd„Zd	d
„Zdd„Z
d
d„Zdd„Zddd„Zdd„Zddd„Zdd„Z‡ZS)rJzŒTest case base class for all unit tests.

    Due to the slowness of DB access, please consider deriving from
    `NoDBTestCase` first.
    TFécshtt|ƒ ¡| t tj dd¡|j	¡¡| t
 ¡¡| t
 ¡¡| t
 ¡¡t ¡|_| |j¡t ¡|_| |j¡|jr¼| t
 ¡¡j}| t tj¡¡|_|jj|dd| t t¡¡|jrâ| t d¡¡tj ddgdd	d
t!j"_#t$ $t!j%j&j'¡|_(| )|j*¡t+j, -¡ddl.m/}g|_0it1_2gt1_0i|_3i|_4|j5r€| tj6dd
¡| 7¡| t 8¡¡n$|j9s¤| t :¡¡| t ;¡¡| t <¡¡| t= >¡¡d
t?_@dt+jA_Bd
t+jA_Cd
tD_E| tF G¡¡}|jH|_H|jI|_I| )|jJ¡| t
 Kd¡¡| tL M¡¡|_N| t O¡¡itP_Q| t R¡¡| t S¡¡|jTdddd
S)z;Run before each test method to initialize test environment.ZOS_TEST_TIMEOUTrÚoslo_concurrency)Ú	lock_pathÚgroupz	nova.testZdriverr/Zoslo_messaging_notifications)rqN)Úapirr)ZdatabaseFZ
http_proxygZfilter_scheduler)Zbuild_failure_weight_multiplierrq)Ur8rJr9Ú
useFixtureÚ
nova_fixturesZTimeoutrÚenvironÚgetÚTIMEOUT_SCALING_FACTORrZNestedTempfileZTempHomeDirÚlog_fixtureZ get_logging_handle_error_fixtureZOutputStreamCaptureÚoutputZStandardLoggingZstdlogÚREQUIRES_LOCKINGZTempDirÚpathÚconfig_fixtureZConfigrr;rZconfigrZConfFixtureÚSTUB_RPCZ
RPCFixtureZset_defaultÚobjects_baseZ
NovaObjectZindirection_apiÚcopyÚNovaObjectRegistryÚ	_registryÚ_obj_classesÚ_base_test_obj_backupÚ
addCleanupÚ_restore_obj_registryrZServiceZclear_min_version_cacheZnova.computerrZCELLSrZ
CELL_CACHEÚ
cell_mappingsÚ
host_mappingsÚUSES_DBZDatabaseÚ_setup_cellsZDefaultFlavorsFixtureÚUSES_DB_SELFZSingleCellSimpleZDatabasePoisonFixtureZWarningsFixtureÚovo_fixtureZStableObjectJsonFixturerZ_IS_NEUTRONZresource_providerZ_TRAITS_SYNCEDZ	_RC_CACHErZQEMU_VERSIONrZ
MoxStuboutZmoxZstubsÚ_clear_attrsZEnvironmentVariablerZ
PolicyFixtureZpolicyZPoisonFunctionsrZDRIVER_CACHEZ"ForbidNewLegacyNotificationFixtureZPrivsepNoHelperFixtureÚflags)r-rprrZmox_fixturer=rr#r9Ñs€þ



ÿÿ
ÿÿ
ÿzTestCase.setUpc	Cs¾t ¡}t ¡}d}tj|tjjd|tjjd}| ¡||j|j	<| 
tjj¡t|jƒD]R}d|d}t
t|ƒ}tj|||||d}| ¡||j|<|j
||dkdq\| |¡dS)	zóSetup a normal cellsv2 environment.

        This sets up the CellDatabase fixture with two cells, one cell0
        and one normal cell. CellMappings are created for both so that
        cells-aware code can find those two databases.
        zfake://nowhere/Zcell0)rÚuuidr[Z
transport_urlZdatabase_connectionzcell%irnr)ÚdefaultN)rtZ
CellDatabasesrÚget_contextrZCellMappingZ
CELL0_UUIDÚcreater†r[Zadd_cell_databaseÚrangeÚNUMBER_OF_CELLSrUÚuuidsrs)	r-Zcelldbsr<Zfake_transportZc0Úxr[rŽÚcellrrr#r‰Es6û
û
zTestCase._setup_cellscCs|jtjj_dSr*)rƒr~r€rr‚©r-rrr#r…ksÿzTestCase._restore_obj_registrycCs2dd„t|j ¡ƒDƒD]}|dkr|j|=qdS)NcSsg|]}|ddkr|‘qS)rÚ_r)rÚkrrr#r$sr%z)TestCase._clear_attrs.<locals>.<listcomp>Úid)ÚlistÚ__dict__Úkeys)r-Úkeyrrr#rŒoszTestCase._clear_attrscCs| t ||¡¡dS)aUReplace a function for the duration of the test.

        Use the monkey patch fixture to replace a function for the
        duration of a test. Useful when you want to provide fake
        methods instead of mocks during testing.

        This should be used instead of self.stubs.Set (which is based
        on mox) going forward.
        N)rsrZMonkeyPatch)r-ÚoldÚnewrrr#Ústub_out|s
zTestCase.stub_outcKs4| dd¡}t| ¡ƒD]\}}t |||¡qdS)z#Override flag variables for a test.rqN)Úpopr›Úitemsr;Úset_override)r-Úkwrqr™Úvrrr#rˆszTestCase.flagsNcKsŠ|dkrj|jrjt ¡}|j| dt¡}tj||p4||d}| ¡||j	|j
<|durj| tj
|d¡| tj||fi|¤Ž¡}|jS)NÚcomputer–)rr,Zcell_mappingr+)rˆrrr†r¢Ú
CELL1_NAMErZHostMappingr‘r‡r,rsrtZConfPatcherZServiceFixtureZservice)r-r[r,rLr<r–ZhmZsvcrrr#Ú
start_serviceŽsþÿzTestCase.start_servicecCs| ¡d|j_| ¡dS)zxRestart a compute service in a realistic way.

        :param:compute: the nova-compute service to be restarted
        N)ÚstoprZ_resource_trackerÚstart)r-r§rrr#Úrestart_compute_service¢sz TestCase.restart_compute_serviceÚc
sÖt|tjƒrt |¡}t|tjƒr,t |¡}‡fdd„‰d	‡‡‡fdd„	‰zˆ||ƒWnxtjjyÐ}z\|j 	¡}|r‚d|}dt
 |¡t
 |¡||f}t|ƒ}||_
||_||_|‚WYd}~n
d}~00dS)
a“Asserts that 2 complex data structures are json equivalent.

        We use data structures which serialize down to json throughout
        the code, and often times we just need to know that these are
        json equivalent. This means that list order is not important,
        and should be sorted.

        Because this is a recursive set of assertions, when failure
        happens we want to expose both the local failure and the
        global view of the 2 data structures being compared. So a
        MismatchError which includes the inner failure as the
        mismatch, and the passed in expected / observed as matchee /
        matcher.

        csRt|ttfƒst|tjƒr"t|ƒSt|tƒrN‡fdd„t| ¡ƒDƒ}t|ƒS|S)Nc3s"|]\}}ˆ|ƒˆ|ƒfVqdSr*r)rržÚvalue©Úsort_keyrr#Ú	<genexpr>Ïsÿz=TestCase.assertJsonEqual.<locals>.sort_key.<locals>.<genexpr>)Ú
isinstanceÚsetr›ÚdatetimeÚstrÚdictr£Úsorted)r•r£r¯rr#r°Ës


ÿz*TestCase.assertJsonEqual.<locals>.sort_keyÚrootc	sŠtˆtƒr´tˆtƒr´ˆ tˆƒtˆƒd|tˆ ¡ƒtˆ ¡ƒttˆ ¡ƒ tˆ ¡ƒ¡ƒf¡tˆƒ}tˆƒ}ˆ ||d|¡tt	 
ˆ¡ƒD] }ˆˆ|ˆ||d|ƒqnÒtˆtttfƒrttˆtttfƒrtˆ tˆƒtˆƒd|tˆˆdtˆˆd‡‡fdd„t 
ˆˆ¡Dƒf¡ttˆˆdƒ}ttˆˆdƒ}ttˆƒƒD]"}ˆt|ƒt|ƒ|d|ƒqNnˆ ˆˆd	|¡dS)
NzGpath: %s. Different dict key sets
expected=%s
observed=%s
difference=%sz!path: %s. Dict keys are not equalz.%szDpath: %s. Different list items
expected=%s
observed=%s
difference=%s)ržcs g|]}|ˆvs|ˆvr|‘qSrr)rÚa©ÚexpectedÚobservedrr#r$ósÿz;TestCase.assertJsonEqual.<locals>.inner.<locals>.<listcomp>z[%s]zpath: %s)r²r¶ÚassertEqualÚlenr·rr›r³Úsymmetric_differencerSZiterkeysÚtupleÚ	itertoolsÚchainÚiterr’Únext)	r»r¼r{Z
expected_keysZ
observed_keysržZexpected_values_iterZobserved_values_iterÚi©Úinnerr-r°rºr#rÇÔsR


ÿýüþþ ÿ

ýüþÿ
z'TestCase.assertJsonEqual.<locals>.innerzmessage: %s
z*
expected:
%s
actual:
%s
difference:
%s
%sN)r¸)r²rSZstring_typesr	ÚloadsrIÚmatchersZ
MismatchErrorZmismatchZdescribeÚpprintZpformatÚAssertionErrorr»r¼Ú
difference)r-r»r¼ÚmessageÚerÌÚmsgÚerrorrrÆr#ÚassertJsonEqual¶s.

	+
üzTestCase.assertJsonEqualcCs¢dd„}|jj}||ƒ}||ƒ}g}t| ¡ƒD]}||vr0| |¡q0| g|d|¡t| ¡ƒD]6}t ||¡}	t ||¡}
| |	|
d||f¡qfdS)NcSs:i}dd„}t ||¡D]\}}| d¡r,q|||<q|S)NcSst |¡pt |¡Sr*)rQÚismethodrR)Úobjectrrr#ÚfindmethodsszPTestCase.assertPublicAPISignatures.<locals>.get_public_apis.<locals>.findmethodsr˜)rQÚ
getmembersrY)ÚinstÚmethodsrÔr[r®rrr#Úget_public_apiss

z;TestCase.assertPublicAPISignatures.<locals>.get_public_apisz'public APIs not listed in base class %sz!%s args don't match base class %s)r>r?r·rÚappendr½rQÚ
getargspec)r-ZbaseinstrÖrØZ	baseclassZbasemethodsZimplmethodsZ
extranamesr[ZbaseargsZimplargsrrr#ÚassertPublicAPISignaturess*ÿÿÿÿz"TestCase.assertPublicAPISignatures)N)r­)r?r@rArBrˆrŠrzr}r“rwr9r‰r…rŒr¡rr©r¬rÑrÛrCrrr=r#rJ·s"t&


ZrJc@seZdZdZdd„ZdS)ÚAPICoverageNcCsJ| |j¡dd„t|jƒDƒ}dd„t|ƒDƒ}| |tj |¡¡dS)NcSsg|]}| d¡s|‘qS)r˜©rY©rr•rrr#r$9s
ÿz0APICoverage.test_api_methods.<locals>.<listcomp>cSs"g|]}| d¡r|dd…‘qS)Ztest_éNrÝrÞrrr#r$;s
ÿ)ZassertIsNotNoneÚ	cover_apiÚdirZ
assertThatrIrÉZContainsAll)r-Zapi_methodsZtest_methodsrrr#Útest_api_methods7s
þzAPICoverage.test_api_methods)r?r@rAràrârrrr#rÜ3srÜcsVeZdZdZejdd„ƒZ‡fdd„Zedd„ƒZ	edd	„ƒZ
d
d„Zdd
„Z‡Z
S)ÚSubclassSignatureTestCasea<Ensure all overriden methods of all subclasses of the class
    under test exactly match the signature of the base class.

    A subclass of SubclassSignatureTestCase should define a method
    _get_base_class which:

    * Returns a base class whose subclasses will all be checked
    * Ensures that all subclasses to be tested have been imported

    SubclassSignatureTestCase defines a single test, test_signatures,
    which does a recursive, depth-first check of all subclasses, ensuring
    that their method signatures are identical to those of the base class.
    cCs
tƒ‚dSr*)ÚNotImplementedErrorr—rrr#Ú_get_base_classQsz)SubclassSignatureTestCase._get_base_classcs| ¡|_tt|ƒ ¡dSr*)rårr8rãr9r—r=rr#r9Us
zSubclassSignatureTestCase.setUpcCsNi}t |tj¡D]6\}}|dkr$qt|dƒr:t|dƒ}q$t |¡||<q|S)z>Return a dict of method_name->argspec for every method of cls.r.Ú__wrapped__)rQrÕrÒÚhasattrrUrÚ)rgZargspecsr[Úmethodrrr#Ú
_get_argspecsZs

z'SubclassSignatureTestCase._get_argspecscCsd|j|jfS)z'Return the fully qualified name of cls.z%s.%s)r@r?rfrrr#Ú_clsnamezsz"SubclassSignatureTestCase._clsnamecCsp| ¡D]b}| |¡}t| ¡ƒD]:\}}||vr"| |||d| |¡| |¡|dœ¡q"| ||¡qdS)Nz@Signature of %(sub)s.%(method)s differs from superclass %(base)s)rÚsubrè)Ú__subclasses__rér›r£r½rêÚ_test_signatures_recurse)r-rZ
base_argspecsrëZsub_argspecsrèZsub_argspecrrr#rís
þþÿz2SubclassSignatureTestCase._test_signatures_recursecCs| |j| |j¡¡dSr*)rírrér—rrr#Útest_signatures“sz)SubclassSignatureTestCase.test_signatures)r?r@rArBÚabcÚabstractmethodrår9rmrérêrírîrCrrr=r#rãBs



rãcs eZdZdZ‡fdd„Z‡ZS)ÚTimeOverridez*Fixture to start and remove time override.cs&tt|ƒ ¡t ¡| tj¡dSr*)r8rñr9r
Zset_time_overrider„Zclear_time_overrider—r=rr#r9šszTimeOverride.setUp)r?r@rArBr9rCrrr=r#rñ—srñc@seZdZdZdZdS)ÚNoDBTestCasezº`NoDBTestCase` differs from TestCase in that DB access is not supported.
    This makes tests run significantly faster. If possible, all new tests
    should derive from this class.
    FN)r?r@rArBrˆrrrr#rò sròc@seZdZdd„ZdS)ÚBaseHookTestCasecCs"| t|dƒ¡| ||j¡dS)NÚ
__hook_name__)Z
assertTruerçr½rô)r-Z
expected_nameÚfuncrrr#Úassert_has_hook©sz BaseHookTestCase.assert_has_hookN)r?r@rArörrrr#ró¨sróc@s0eZdZdZdd„Zdd„Zdd„Zdd	„Zd
S)Ú	MatchTypeaIMatches any instance of a specified type

    The MatchType class is a helper for use with the
    mock.assert_called_with() method that lets you
    assert that a particular parameter has a specific
    data type. It enables strict check than the built
    in mock.ANY helper, and is the equivalent of the
    mox.IsA() function from the legacy mox library

    Example usage could be:

      mock_some_method.assert_called_once_with(
            "hello",
            MatchType(objects.Instance),
            mock.ANY,
            "world",
            MatchType(objects.KeyPair))
    cCs
||_dSr*)Úwanttype)r-rørrr#r.ÁszMatchType.__init__cCst|ƒ|jkSr*©Útyperø©r-Úotherrrr#Ú__eq__ÄszMatchType.__eq__cCst|ƒ|jkSr*rùrûrrr#Ú__ne__ÇszMatchType.__ne__cCsdt|jƒdS)Nz<MatchType:ú>)rµrør—rrr#Ú__repr__ÊszMatchType.__repr__N©r?r@rArBr.rýrþrrrrr#r÷®s
r÷c@s0eZdZdZdd„Zdd„Zdd„Zdd	„Zd
S)Ú
MatchObjPrimsz&Matches objects with equal primitives.cCs
||_dSr*©Úwant_obj)r-rrrr#r.ÐszMatchObjPrims.__init__cCst ||j¡Sr*)r~Zobj_equal_primsrrûrrr#rýÓszMatchObjPrims.__eq__cCs||jkSr*rrûrrr#rþÖszMatchObjPrims.__ne__cCsdt|jƒdS)Nz<MatchObjPrims:rÿ)rµrr—rrr#rÙszMatchObjPrims.__repr__Nrrrrr#rÎs
rc@s0eZdZdZdd„Zdd„Zdd„Zdd	„Zd
S)ÚContainKeyValuea]Checks whether a key/value pair is in a dict parameter.

    The ContainKeyValue class is a helper for use with the
    mock.assert_*() method that lets you assert that a particular
    dict contain a key/value pair. It enables strict check than
    the built in mock.ANY helper, and is the equivalent of the
    mox.ContainsKeyValue() function from the legacy mox library

    Example usage could be:

      mock_some_method.assert_called_once_with(
            "hello",
            ContainKeyValue('foo', bar),
            mock.ANY,
            "world",
            ContainKeyValue('hello', world))
    cCs||_||_dSr*)ÚwantkeyÚ	wantvalue)r-rrrrr#r.ïszContainKeyValue.__init__c	Cs0z||j|jkWSttfy*YdS0dS)NF©rrÚKeyErrorrVrûrrr#rýószContainKeyValue.__eq__c	Cs0z||j|jkWSttfy*YdS0dS)NTrrûrrr#rþùszContainKeyValue.__ne__cCs dt|jƒdt|jƒdS)Nz<ContainKeyValue: key z and value rÿ)rµrrr—rrr#rÿsÿÿÿzContainKeyValue.__repr__Nrrrrr#rÝs
r)\rBZeventletZmonkey_patchrïr&rr´rQrÁrrÊrirr_Z
oslo_cacherÚcacherorZoslo_configrrr|Zoslo_log.fixturerrxZoslo_logrZloggingZoslo_serializationr	Z
oslo_utilsr
Zoslo_versionedobjectsr‹ZoslotestrrSrIrrr
rZnova.networkrr:Znova.network.security_grouprrZnova.objectsrr~Z
nova.testsrtZnova.tests.unitrrrr”rZ	nova.virtrr;Zregister_optionsr¤ZsetupZ	configureZ_TRUE_VALUESr¨ZPY2r(ÚcontextmanagerZFixturer)Ú	ExceptionrDrÓrErarbrhrJrÜZ
add_metaclassÚABCMetarãrñròrór÷rrrrrr#Ú<module>sˆ


 ~
T