code: func (rc *Client) UpgradeCC(channelID string, req UpgradeCCRequest, options ...RequestOption) (UpgradeCCResponse, error) {
  
  	opts, err := rc.prepareRequestOpts(options...)
  	if err != nil {
  		return UpgradeCCResponse{}, errors.WithMessage(err, "failed to get opts for UpgradeCC")
  	}
  
  	reqCtx, cancel := rc.createRequestContext(opts, fab.ResMgmt)
  	defer cancel()
  
  	txID, err := rc.sendCCProposal(reqCtx, UpgradeChaincode, channelID, InstantiateCCRequest(req), opts)
  	return UpgradeCCResponse{TransactionID: txID}, err
  }
docs: // UpgradeCC upgrades chaincode with optional custom options (specific peers, filtered peers, timeout). If peer(s) are not specified in options
  // it will default to all channel peers.
  //  Parameters:
  //  channel is manadatory channel name
  //  req holds info about mandatory chaincode name, path, version and policy
  //  options holds optional request options
  //
  //  Returns:
  //  upgrade chaincode response with transaction ID