@@ -20,6 +20,8 @@ import (
20
20
"github.com/hyperledger/fabric/common/cauthdsl"
21
21
"github.com/hyperledger/fabric/common/chainconfig"
22
22
"github.com/hyperledger/fabric/common/policies"
23
+ "github.com/hyperledger/fabric/msp"
24
+ mspmgmt "github.com/hyperledger/fabric/msp/mgmt"
23
25
cb "github.com/hyperledger/fabric/protos/common"
24
26
)
25
27
@@ -32,6 +34,9 @@ type Resources interface {
32
34
33
35
// ChainConfig returns the chainconfig.Descriptor for the chain
34
36
ChainConfig () chainconfig.Descriptor
37
+
38
+ // MSPManager returns the msp.MSPManager for the chain
39
+ MSPManager () msp.MSPManager
35
40
}
36
41
37
42
// Initializer is a structure which is only useful before a configtx.Manager
@@ -44,9 +49,10 @@ type Initializer interface {
44
49
}
45
50
46
51
type resources struct {
47
- handlers map [cb.ConfigurationItem_ConfigurationType ]Handler
48
- policyManager policies.Manager
49
- chainConfig chainconfig.Descriptor
52
+ handlers map [cb.ConfigurationItem_ConfigurationType ]Handler
53
+ policyManager policies.Manager
54
+ chainConfig chainconfig.Descriptor
55
+ mspConfigHandler * mspmgmt.MSPConfigHandler
50
56
}
51
57
52
58
// PolicyManager returns the policies.Manager for the chain
@@ -59,22 +65,27 @@ func (r *resources) ChainConfig() chainconfig.Descriptor {
59
65
return r .chainConfig
60
66
}
61
67
68
+ // MSPManager returns the msp.MSPManager for the chain
69
+ func (r * resources ) MSPManager () msp.MSPManager {
70
+ return r .mspConfigHandler .GetMSPManager ()
71
+ }
72
+
62
73
// Handlers returns the handlers to be used when initializing the configtx.Manager
63
74
func (r * resources ) Handlers () map [cb.ConfigurationItem_ConfigurationType ]Handler {
64
75
return r .handlers
65
76
}
66
77
67
78
// NewInitializer creates a chain initializer for the basic set of common chain resources
68
79
func NewInitializer () Initializer {
80
+ mspConfigHandler := & mspmgmt.MSPConfigHandler {}
69
81
policyProviderMap := make (map [int32 ]policies.Provider )
70
82
for pType := range cb .Policy_PolicyType_name {
71
83
rtype := cb .Policy_PolicyType (pType )
72
84
switch rtype {
73
85
case cb .Policy_UNKNOWN :
74
86
// Do not register a handler
75
87
case cb .Policy_SIGNATURE :
76
- policyProviderMap [pType ] = cauthdsl .NewPolicyProvider (
77
- cauthdsl .NewMockDeserializer ()) // FIXME: here we should pass in the orderer MSP as soon as it's ready
88
+ policyProviderMap [pType ] = cauthdsl .NewPolicyProvider (mspConfigHandler )
78
89
case cb .Policy_MSP :
79
90
// Add hook for MSP Handler here
80
91
}
@@ -91,14 +102,17 @@ func NewInitializer() Initializer {
91
102
handlers [rtype ] = chainConfig
92
103
case cb .ConfigurationItem_Policy :
93
104
handlers [rtype ] = policyManager
105
+ case cb .ConfigurationItem_MSP :
106
+ handlers [rtype ] = mspConfigHandler
94
107
default :
95
108
handlers [rtype ] = NewBytesHandler ()
96
109
}
97
110
}
98
111
99
112
return & resources {
100
- handlers : handlers ,
101
- policyManager : policyManager ,
102
- chainConfig : chainConfig ,
113
+ handlers : handlers ,
114
+ policyManager : policyManager ,
115
+ chainConfig : chainConfig ,
116
+ mspConfigHandler : mspConfigHandler ,
103
117
}
104
118
}
0 commit comments