@@ -841,6 +841,7 @@ class CloudFacade(Type):
841841 'container' : {'type' : 'string' },
842842 'cores' : {'type' : 'integer' },
843843 'cpu-power' : {'type' : 'integer' },
844+ 'image-id' : {'type' : 'string' },
844845 'instance-role' : {'type' : 'string' },
845846 'instance-type' : {'type' : 'string' },
846847 'mem' : {'type' : 'integer' },
@@ -1595,17 +1596,18 @@ class FirewallerFacade(Type):
15951596 'underlay' : {'type' : 'string' }},
15961597 'required' : ['underlay' , 'overlay' ],
15971598 'type' : 'object' },
1598- 'FirewallRule' : {'additionalProperties' : False ,
1599- 'properties' : {'known-service' : {'type' : 'string' },
1600- 'whitelist-cidrs' : {'items' : {'type' : 'string' },
1601- 'type' : 'array' }},
1602- 'required' : ['known-service' ],
1603- 'type' : 'object' },
1604- 'KnownServiceArgs' : {'additionalProperties' : False ,
1605- 'properties' : {'known-services' : {'items' : {'type' : 'string' },
1606- 'type' : 'array' }},
1607- 'required' : ['known-services' ],
1608- 'type' : 'object' },
1599+ 'IngressRule' : {'additionalProperties' : False ,
1600+ 'properties' : {'port-range' : {'$ref' : '#/definitions/PortRange' },
1601+ 'source-cidrs' : {'items' : {'type' : 'string' },
1602+ 'type' : 'array' }},
1603+ 'required' : ['port-range' , 'source-cidrs' ],
1604+ 'type' : 'object' },
1605+ 'IngressRulesResult' : {'additionalProperties' : False ,
1606+ 'properties' : {'error' : {'$ref' : '#/definitions/Error' },
1607+ 'rules' : {'items' : {'$ref' : '#/definitions/IngressRule' },
1608+ 'type' : 'array' }},
1609+ 'required' : ['rules' ],
1610+ 'type' : 'object' },
16091611 'LifeResult' : {'additionalProperties' : False ,
16101612 'properties' : {'error' : {'$ref' : '#/definitions/Error' },
16111613 'life' : {'type' : 'string' }},
@@ -1616,11 +1618,6 @@ class FirewallerFacade(Type):
16161618 'type' : 'array' }},
16171619 'required' : ['results' ],
16181620 'type' : 'object' },
1619- 'ListFirewallRulesResults' : {'additionalProperties' : False ,
1620- 'properties' : {'Rules' : {'items' : {'$ref' : '#/definitions/FirewallRule' },
1621- 'type' : 'array' }},
1622- 'required' : ['Rules' ],
1623- 'type' : 'object' },
16241621 'Macaroon' : {'additionalProperties' : False , 'type' : 'object' },
16251622 'MacaroonResult' : {'additionalProperties' : False ,
16261623 'properties' : {'error' : {'$ref' : '#/definitions/Error' },
@@ -1813,13 +1810,6 @@ class FirewallerFacade(Type):
18131810 'configuration.' ,
18141811 'properties' : {'Result' : {'$ref' : '#/definitions/ControllerConfigResult' }},
18151812 'type' : 'object' },
1816- 'FirewallRules' : {'description' : 'FirewallRules returns the '
1817- 'firewall rules for the '
1818- 'specified well known service '
1819- 'types.' ,
1820- 'properties' : {'Params' : {'$ref' : '#/definitions/KnownServiceArgs' },
1821- 'Result' : {'$ref' : '#/definitions/ListFirewallRulesResults' }},
1822- 'type' : 'object' },
18231813 'GetAssignedMachine' : {'description' : 'GetAssignedMachine '
18241814 'returns the assigned '
18251815 'machine tag (if any) '
@@ -1867,6 +1857,13 @@ class FirewallerFacade(Type):
18671857 "current model's configuration." ,
18681858 'properties' : {'Result' : {'$ref' : '#/definitions/ModelConfigResult' }},
18691859 'type' : 'object' },
1860+ 'ModelFirewallRules' : {'description' : 'ModelFirewallRules '
1861+ 'returns the firewall '
1862+ 'rules that this model '
1863+ 'is\n '
1864+ 'configured to open' ,
1865+ 'properties' : {'Result' : {'$ref' : '#/definitions/IngressRulesResult' }},
1866+ 'type' : 'object' },
18701867 'OpenedMachinePortRanges' : {'description' : 'OpenedMachinePortRanges '
18711868 'returns a list of '
18721869 'the opened port '
@@ -1988,6 +1985,16 @@ class FirewallerFacade(Type):
19881985 'properties' : {'Params' : {'$ref' : '#/definitions/Entities' },
19891986 'Result' : {'$ref' : '#/definitions/StringsWatchResults' }},
19901987 'type' : 'object' },
1988+ 'WatchModelFirewallRules' : {'description' : 'WatchModelFirewallRules '
1989+ 'returns a '
1990+ 'NotifyWatcher that '
1991+ 'notifies of\n '
1992+ 'potential changes '
1993+ "to a model's "
1994+ 'configured '
1995+ 'firewall rules' ,
1996+ 'properties' : {'Result' : {'$ref' : '#/definitions/NotifyWatchResult' }},
1997+ 'type' : 'object' },
19911998 'WatchModelMachineStartTimes' : {'description' : 'WatchModelMachineStartTimes '
19921999 'watches the '
19932000 'non-container '
@@ -2129,29 +2136,6 @@ async def ControllerConfig(self):
21292136
21302137
21312138
2132- @ReturnMapping (ListFirewallRulesResults )
2133- async def FirewallRules (self , known_services = None ):
2134- '''
2135- FirewallRules returns the firewall rules for the specified well known service types.
2136-
2137- known_services : typing.Sequence[str]
2138- Returns -> ListFirewallRulesResults
2139- '''
2140- if known_services is not None and not isinstance (known_services , (bytes , str , list )):
2141- raise Exception ("Expected known_services to be a Sequence, received: {}" .format (type (known_services )))
2142-
2143- # map input types to rpc msg
2144- _params = dict ()
2145- msg = dict (type = 'Firewaller' ,
2146- request = 'FirewallRules' ,
2147- version = 7 ,
2148- params = _params )
2149- _params ['known-services' ] = known_services
2150- reply = await self .rpc (msg )
2151- return reply
2152-
2153-
2154-
21552139 @ReturnMapping (StringResults )
21562140 async def GetAssignedMachine (self , entities = None ):
21572141 '''
@@ -2312,6 +2296,28 @@ async def ModelConfig(self):
23122296
23132297
23142298
2299+ @ReturnMapping (IngressRulesResult )
2300+ async def ModelFirewallRules (self ):
2301+ '''
2302+ ModelFirewallRules returns the firewall rules that this model is
2303+ configured to open
2304+
2305+
2306+ Returns -> IngressRulesResult
2307+ '''
2308+
2309+ # map input types to rpc msg
2310+ _params = dict ()
2311+ msg = dict (type = 'Firewaller' ,
2312+ request = 'ModelFirewallRules' ,
2313+ version = 7 ,
2314+ params = _params )
2315+
2316+ reply = await self .rpc (msg )
2317+ return reply
2318+
2319+
2320+
23152321 @ReturnMapping (OpenMachinePortRangesResults )
23162322 async def OpenedMachinePortRanges (self , entities = None ):
23172323 '''
@@ -2505,6 +2511,28 @@ async def WatchIngressAddressesForRelations(self, entities=None):
25052511
25062512
25072513
2514+ @ReturnMapping (NotifyWatchResult )
2515+ async def WatchModelFirewallRules (self ):
2516+ '''
2517+ WatchModelFirewallRules returns a NotifyWatcher that notifies of
2518+ potential changes to a model's configured firewall rules
2519+
2520+
2521+ Returns -> NotifyWatchResult
2522+ '''
2523+
2524+ # map input types to rpc msg
2525+ _params = dict ()
2526+ msg = dict (type = 'Firewaller' ,
2527+ request = 'WatchModelFirewallRules' ,
2528+ version = 7 ,
2529+ params = _params )
2530+
2531+ reply = await self .rpc (msg )
2532+ return reply
2533+
2534+
2535+
25082536 @ReturnMapping (StringsWatchResult )
25092537 async def WatchModelMachineStartTimes (self ):
25102538 '''
0 commit comments