Providers option is not handled properly for multi-lang components
See original GitHub issueExpected behavior
- In the pulumi-eks in python we set an explicit provider.
- The eks cluster comes up in the aws region that the explicit provider is specified: For example in ( us-west-2, or us-east-2, or etc…anything except us-east-1)
Current behavior
- In the pulumi-eks in python we set an explicit provider.
- The eks provider IGNORES the explicit provider and selects the
aws:regionthat is in thepulumi config
Steps to reproduce
- plugins:
pulumi plugin ls -p
aws resource 3.32.0 248 MB 6 days ago 9 minutes ago
eks resource 0.22.0 1.8 MB 22 hours ago 22 hours ago
kubernetes resource 2.8.2 70 MB 1 week ago 17 hours ago
python language 21 MB 1 week ago 2 seconds ago
- pulumi version
v2.22.0
pulumi config
KEY VALUE
aws:profile default
aws:region us-east-1
- Code in
__main__.py
import pulumi
import pulumi_aws as aws
import pulumi_eks as eks
base_name = "demo"
# AWS named profile to use.
myprofile = aws.config.profile
# Create an AWS provider instance using the named profile creds
# and current region.
uswest2 = aws.Provider("uswest2",region="us-west-2", profile = myprofile)
# Define the AWS provider credential opts to configure the cluster's
# kubeconfig auth.
kubeconfig_opts = eks.KubeconfigOptionsArgs(profile_name=myprofile)
myekscluster = eks.Cluster(base_name,
provider_credential_opts=kubeconfig_opts,
opts=pulumi.ResourceOptions(provider=uswest2)
)
-
pulumi up view the details
The provider for the resources shows up as:
provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]instead of
provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::uswest2
Do you want to perform this update? details
+ pulumi:pulumi:Stack: (create)
[urn=urn:pulumi:dev::aws-eks-py::pulumi:pulumi:Stack::aws-eks-py-dev]
+ pulumi:providers:aws: (create)
[urn=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::uswest2]
profile : "pulumi-ce"
region : "us-west-2"
skipCredentialsValidation: "true"
skipGetEc2Platforms : "true"
skipMetadataApiCheck : "true"
skipRegionValidation : "true"
version : "3.32.0"
+ eks:index:Cluster: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster::demo]
+ eks:index:ServiceRole: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:ServiceRole::demo-instanceRole]
+ eks:index:ServiceRole: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:ServiceRole::demo-eksRole]
+ eks:index:RandomSuffix: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:RandomSuffix::demo-cfnStackName]
input: "demo"
+ aws:iam/role:Role: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:ServiceRole$aws:iam/role:Role::demo-eksRole-role]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
assumeRolePolicy : "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"sts:AssumeRole\"],\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"eks.amazonaws.com\"]}}]}"
description : "Allows EKS to manage clusters on your behalf."
forceDetachPolicies: false
maxSessionDuration : 3600
name : "demo-eksRole-role-38513e2"
path : "/"
+ aws:iam/role:Role: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:ServiceRole$aws:iam/role:Role::demo-instanceRole-role]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
assumeRolePolicy : "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"sts:AssumeRole\"],\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"ec2.amazonaws.com\"]}}]}"
forceDetachPolicies: false
maxSessionDuration : 3600
name : "demo-instanceRole-role-24fe241"
path : "/"
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-eksRole-4b490823]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
policyArn : "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy"
role : output<string>
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-eksRole-90eb1c99]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
policyArn : "arn:aws:iam::aws:policy/AmazonEKSServicePolicy"
role : output<string>
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-instanceRole-03516f97]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
policyArn : "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy"
role : output<string>
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-instanceRole-e1b295bd]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
policyArn : "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy"
role : output<string>
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-instanceRole-3eb088f2]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
policyArn : "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
role : output<string>
+ aws:iam/instanceProfile:InstanceProfile: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:iam/instanceProfile:InstanceProfile::demo-instanceProfile]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
name : "demo-instanceProfile-31cad9e"
path : "/"
role : output<string>
+ aws:ec2/securityGroup:SecurityGroup: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:ec2/securityGroup:SecurityGroup::demo-eksClusterSecurityGroup]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
description : "Managed by Pulumi"
name : "demo-eksClusterSecurityGroup-52b2e02"
revokeRulesOnDelete: true
tags : {
Name : "demo-eksClusterSecurityGroup"
}
vpcId : "vpc-00fa4d7a"
+ aws:ec2/securityGroupRule:SecurityGroupRule: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::demo-eksClusterInternetEgressRule]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
cidrBlocks : [
[0]: "0.0.0.0/0"
]
description : "Allow internet access."
fromPort : 0
protocol : "-1"
securityGroupId: output<string>
self : false
toPort : 0
type : "egress"
+ aws:eks/cluster:Cluster: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:eks/cluster:Cluster::demo-eksCluster]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
name : "demo-eksCluster-f8d976c"
roleArn : output<string>
tags : {
Name : "demo-eksCluster"
}
vpcConfig : {
endpointPrivateAccess: false
endpointPublicAccess : true
securityGroupIds : [
[0]: output<string>
]
subnetIds : [
[0]: "subnet-3b742934"
[1]: "subnet-e0e2c9aa"
[2]: "subnet-ff910a98"
[3]: "subnet-857b1fd9"
[4]: "subnet-db4224f5"
[5]: "subnet-7b73dc45"
]
}
+ pulumi:providers:kubernetes: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$pulumi:providers:kubernetes::demo-eks-k8s]
kubeconfig: output<string>
version : "2.8.2"
+ eks:index:VpcCni: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$eks:index:VpcCni::demo-vpc-cni]
kubeconfig: output<string>
+ aws:ec2/securityGroup:SecurityGroup: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:ec2/securityGroup:SecurityGroup::demo-nodeSecurityGroup]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
description : "Managed by Pulumi"
name : "demo-nodeSecurityGroup-b298d2e"
revokeRulesOnDelete: true
tags : {
Name : "demo-nodeSecurityGroup"
kubernetes.io/cluster/demo-eksCluster-f8d976c: "owned"
}
vpcId : "vpc-00fa4d7a"
+ kubernetes:core/v1:ConfigMap: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$kubernetes:core/v1:ConfigMap::demo-nodeAccess]
[provider=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$pulumi:providers:kubernetes::demo-eks-k8s::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
apiVersion: "v1"
data : {
mapRoles: output<string>
}
kind : "ConfigMap"
metadata : {
name : "aws-auth"
namespace: "kube-system"
}
+ aws:ec2/securityGroupRule:SecurityGroupRule: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::demo-eksExtApiServerClusterIngressRule]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
description : "Allow pods running extension API servers on port 443 to receive communication from cluster control plane"
fromPort : 443
protocol : "tcp"
securityGroupId : output<string>
sourceSecurityGroupId: output<string>
toPort : 443
type : "ingress"
+ aws:ec2/securityGroupRule:SecurityGroupRule: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::demo-eksNodeClusterIngressRule]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
description : "Allow worker Kubelets and pods to receive communication from the cluster control plane"
fromPort : 1025
protocol : "tcp"
securityGroupId : output<string>
sourceSecurityGroupId: output<string>
toPort : 65535
type : "ingress"
+ aws:ec2/securityGroupRule:SecurityGroupRule: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::demo-eksClusterIngressRule]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
description : "Allow pods to communicate with the cluster API Server"
fromPort : 443
protocol : "tcp"
securityGroupId : output<string>
sourceSecurityGroupId: output<string>
toPort : 443
type : "ingress"
+ aws:ec2/securityGroupRule:SecurityGroupRule: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::demo-eksNodeIngressRule]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
description : "Allow nodes to communicate with each other"
fromPort : 0
protocol : "-1"
securityGroupId: output<string>
self : true
toPort : 0
type : "ingress"
+ aws:ec2/securityGroupRule:SecurityGroupRule: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:ec2/securityGroupRule:SecurityGroupRule::demo-eksNodeInternetEgressRule]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
cidrBlocks : [
[0]: "0.0.0.0/0"
]
description : "Allow internet access."
fromPort : 0
protocol : "-1"
securityGroupId: output<string>
self : false
toPort : 0
type : "egress"
+ aws:ec2/launchConfiguration:LaunchConfiguration: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:ec2/launchConfiguration:LaunchConfiguration::demo-nodeLaunchConfiguration]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
associatePublicIpAddress: true
enableMonitoring : true
iamInstanceProfile : output<string>
imageId : output<string>
instanceType : "t2.medium"
name : "demo-nodeLaunchConfiguration-581dcd2"
rootBlockDevice : {
deleteOnTermination: true
volumeSize : 20
volumeType : "gp2"
}
securityGroups : [
[0]: output<string>
]
userData : output<string>
+ aws:cloudformation/stack:Stack: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$aws:cloudformation/stack:Stack::demo-nodes]
[provider=urn:pulumi:dev::aws-eks-py::pulumi:providers:aws::default_3_32_0::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
name : output<string>
tags : {
Name : "demo-nodes"
}
templateBody: output<string>
+ pulumi:providers:kubernetes: (create)
[urn=urn:pulumi:dev::aws-eks-py::eks:index:Cluster$pulumi:providers:kubernetes::demo-provider]
kubeconfig: output<string>
version : "2.8.2"
Context (Environment)
A similar code block in TS works, it uses the explicit provider correctly:
import * as eks from "@pulumi/eks";
import * as aws from "@pulumi/aws";
const uswest2 = new aws.Provider("uswest2", { region: "us-west-2" });
const basename= "demo";
// Create an EKS cluster with the default configuration.
const cluster = new eks.Cluster(`${basename}`, {
providerCredentialOpts: {profileName: aws.config.profile}
}, {provider: uswest2});
// Export the cluster's name.
export const cluster_name = cluster.eksCluster.name;
// Export the cluster's kubeconfig.
export const kubeconfig = cluster.kubeconfig;
The details of the code above after pulumi up shows that the provider is our explicit provider:
provider=urn:pulumi:dev::aws-eks-ts::pulumi:providers:aws::uswest2
+ pulumi:pulumi:Stack: (create)
[urn=urn:pulumi:dev::aws-eks-ts::pulumi:pulumi:Stack::aws-eks-ts-dev]
+ eks:index:Cluster: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster::demo]
+ eks:index:ServiceRole: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$eks:index:ServiceRole::demo-instanceRole]
+ pulumi:providers:aws: (create)
[urn=urn:pulumi:dev::aws-eks-ts::pulumi:providers:aws::uswest2]
region : "us-west-2"
version: "3.5.0"
+ eks:index:ServiceRole: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$eks:index:ServiceRole::demo-eksRole]
+ aws:iam/role:Role: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$eks:index:ServiceRole$aws:iam/role:Role::demo-instanceRole-role]
[provider=urn:pulumi:dev::aws-eks-ts::pulumi:providers:aws::uswest2::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
assumeRolePolicy : "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"sts:AssumeRole\"],\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"ec2.amazonaws.com\"]}}]}"
forceDetachPolicies: false
maxSessionDuration : 3600
name : "demo-instanceRole-role-cb968a3"
path : "/"
+ aws:iam/role:Role: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$eks:index:ServiceRole$aws:iam/role:Role::demo-eksRole-role]
[provider=urn:pulumi:dev::aws-eks-ts::pulumi:providers:aws::uswest2::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
assumeRolePolicy : "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"sts:AssumeRole\"],\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"eks.amazonaws.com\"]}}]}"
description : "Allows EKS to manage clusters on your behalf."
forceDetachPolicies: false
maxSessionDuration : 3600
name : "demo-eksRole-role-d3093bc"
path : "/"
+ pulumi-nodejs:dynamic:Resource: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$pulumi-nodejs:dynamic:Resource::demo-cfnStackName]
input : "demo"
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-instanceRole-e1b295bd]
[provider=urn:pulumi:dev::aws-eks-ts::pulumi:providers:aws::uswest2::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
policyArn : "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy"
role : output<string>
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-instanceRole-3eb088f2]
[provider=urn:pulumi:dev::aws-eks-ts::pulumi:providers:aws::uswest2::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
policyArn : "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
role : output<string>
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-instanceRole-03516f97]
[provider=urn:pulumi:dev::aws-eks-ts::pulumi:providers:aws::uswest2::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
policyArn : "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy"
role : output<string>
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-eksRole-4b490823]
[provider=urn:pulumi:dev::aws-eks-ts::pulumi:providers:aws::uswest2::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
policyArn : "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy"
role : output<string>
+ aws:iam/rolePolicyAttachment:RolePolicyAttachment: (create)
[urn=urn:pulumi:dev::aws-eks-ts::eks:index:Cluster$eks:index:ServiceRole$aws:iam/rolePolicyAttachment:RolePolicyAttachment::demo-eksRole-90eb1c99]
[provider=urn:pulumi:dev::aws-eks-ts::pulumi:providers:aws::uswest2::04da6b54-80e4-46f7-96ec-b56ff0331ba9]
..
..
The package.json
{
"name": "aws-eks-ts",
"devDependencies": {
"@types/node": "^10.0.0"
},
"dependencies": {
"@pulumi/aws": "^3.0.0",
"@pulumi/awsx": "^0.22.0",
"@pulumi/eks": "^0.20.0",
"@pulumi/kubernetes": "^2.6.1",
"@pulumi/pulumi": "^2.0.0"
}
}
Affected feature
Issue Analytics
- State:
- Created 3 years ago
- Reactions:1
- Comments:6 (6 by maintainers)
Top Results From Across the Web
Introducing Pulumi Packages and multi-language ...
Pulumi Packages connect the full power of the cloud and the creativity of the Pulumi Community to the Pulumi Cloud Engineering Platform.
Read more >How to approach multi-language Gatsby apps
We will first configure a translation module (i.e. how to load the documents, what's the fallback language, how to handle translation requests) ...
Read more >Vue i18n: Building a multi-language app with locale switcher
So, our application is now multilingual, but there's no option to actually switch between locales via the user interface.
Read more >9 Multi Language Support - Guided Learning
If your operating systems does not support ZIP files you can use one of the following software providers: Winzip, Winrar, izip. exporting. Your...
Read more >Support different languages and cultures
Android resolves language- and culture-specific resources based on the system locale setting. You can provide support for different locales ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found

Ok, all the fixes have merged, so we just need to bump the pulumi/pulumi dependency to fix this for EKS.
I was able to get this working locally for Python, and am in the process of getting the various fixes merged in.
This involves three major pieces:
RegisterResourceRequestprotobuf to include aprovidersfield (merged)providersfield in the engine’s ResourceMonitor (merged)providersreferences for remote resources and populate theprovidersfield onRegisterResourcerequests with the resolved references. (merged)