Skip to content
This repository was archived by the owner on Jun 20, 2025. It is now read-only.

Commit 9516d0c

Browse files
danbunnellfacebook-github-bot
authored andcommitted
Upgrade PCP to get Container Service permission support (#2270)
Summary: Pull Request resolved: #2270 This change upgrades the FBPCS dependency on FBPCP package to a new version. This version contains added support for configuring the permissions of a container when starting new instances. A PCS subtype of the ContainerService is also updated to reflect the interface changes. Reviewed By: joe1234wu, marksliva, gitfish77 Differential Revision: D44433879 fbshipit-source-id: 4275fdb52ac199394b4e6971216feaf75be13610
1 parent 9d6da47 commit 9516d0c

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

fbpcs/common/service/pcs_container_service.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from fbpcp.entity.cluster_instance import Cluster
1212
from fbpcp.entity.container_instance import ContainerInstance
13+
from fbpcp.entity.container_permission import ContainerPermissionConfig
1314
from fbpcp.entity.container_type import ContainerType
1415
from fbpcp.error.pcp import PcpError
1516
from fbpcp.service.container import ContainerService
@@ -48,12 +49,14 @@ def create_instance(
4849
cmd: str,
4950
env_vars: Optional[Dict[str, str]] = None,
5051
container_type: Optional[ContainerType] = None,
52+
permission: Optional[ContainerPermissionConfig] = None,
5153
) -> ContainerInstance:
5254
instance = self.inner_container_service.create_instance(
5355
container_definition=container_definition,
5456
cmd=cmd,
5557
env_vars=env_vars,
5658
container_type=container_type,
59+
permission=permission,
5760
)
5861
log_url = None
5962
if self.log_retriever:
@@ -67,6 +70,7 @@ def create_instances(
6770
cmds: List[str],
6871
env_vars: Optional[Union[Dict[str, str], List[Dict[str, str]]]] = None,
6972
container_type: Optional[ContainerType] = None,
73+
permission: Optional[ContainerPermissionConfig] = None,
7074
) -> List[ContainerInstance]:
7175
"""
7276
Args:
@@ -78,6 +82,7 @@ def create_instances(
7882
is the same as the length of the cmds list, such that each item corresponds
7983
to one instance.
8084
container_type: The type of container to create.
85+
permission: A configuration which describes the container permissions
8186
Returns:
8287
A list of ContainerInstances.
8388
"""
@@ -92,6 +97,7 @@ def create_instances(
9297
cmd=cmds[i],
9398
env_vars=env_vars[i] if type(env_vars) is list else env_vars,
9499
container_type=container_type,
100+
permission=permission,
95101
)
96102
for i in range(len(cmds))
97103
]

fbpcs/common/service/test/test_pcs_container_service.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from fbpcp.entity.cloud_provider import CloudProvider
1212
from fbpcp.entity.container_instance import ContainerInstance, ContainerInstanceStatus
13+
from fbpcp.entity.container_permission import ContainerPermissionConfig
1314
from fbpcp.entity.container_type import ContainerType, ContainerTypeConfig
1415
from fbpcp.gateway.ecs import ECSGateway
1516
from fbpcp.service.container_aws import AWSContainerService
@@ -37,6 +38,7 @@
3738
TEST_CMD_2 = "test_2"
3839
TEST_CLOUD_PROVIDER = CloudProvider.AWS
3940
TEST_CONTAINER_TYPE = ContainerType.MEDIUM
41+
TEST_CONTAINER_PERMISSION = ContainerPermissionConfig("test-role-id")
4042

4143

4244
class TestPcsContainerService(unittest.TestCase):
@@ -109,12 +111,14 @@ def test_create_instances_with_list_of_env_vars(self, mock_create_instance):
109111
cmd=TEST_CMD_1,
110112
env_vars=TEST_ENV_VARS,
111113
container_type=TEST_CONTAINER_TYPE,
114+
permission=TEST_CONTAINER_PERMISSION,
112115
),
113116
call(
114117
container_definition=f"{TEST_TASK_DEFNITION}#{TEST_CONTAINER_DEFNITION}",
115118
cmd=TEST_CMD_2,
116119
env_vars=TEST_ENV_VARS_2,
117120
container_type=TEST_CONTAINER_TYPE,
121+
permission=TEST_CONTAINER_PERMISSION,
118122
),
119123
]
120124

@@ -126,6 +130,7 @@ def test_create_instances_with_list_of_env_vars(self, mock_create_instance):
126130
cmds=cmd_list,
127131
env_vars=[TEST_ENV_VARS, TEST_ENV_VARS_2],
128132
container_type=TEST_CONTAINER_TYPE,
133+
permission=TEST_CONTAINER_PERMISSION,
129134
)
130135

131136
# Assert

fbpcs/pip_requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ botocore==1.21.65
33
cython==0.29.30 # required by thriftpy2 setup
44
dataclasses-json==0.5.2 # fbpcp requires this version, so we must as well
55
docopt>=0.6.2
6-
fbpcp~=0.5 # depending on: boto3, botocore
6+
fbpcp~=0.6 # depending on: boto3, botocore
77
marshmallow==3.5.1
88
networkx>=2.6.3
99
requests>=2.26.0

0 commit comments

Comments
 (0)