本文整理汇总了Golang中github.com/cloudfoundry/cli/cf/models.Organization类的典型用法代码示例。如果您正苦于以下问题:Golang Organization类的具体用法?Golang Organization怎么用?Golang Organization使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Organization类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1:
developmentSpaceFields.GUID = "dev-space-guid-1"
stagingSpaceFields := models.SpaceFields{}
stagingSpaceFields.Name = "staging"
stagingSpaceFields.GUID = "staging-space-guid-1"
domainFields := models.DomainFields{}
domainFields.Name = "cfapps.io"
domainFields.GUID = "1111"
domainFields.OwningOrganizationGUID = "my-org-guid"
domainFields.Shared = true
cfAppDomainFields := models.DomainFields{}
cfAppDomainFields.Name = "cf-app.com"
cfAppDomainFields.GUID = "2222"
cfAppDomainFields.OwningOrganizationGUID = "my-org-guid"
cfAppDomainFields.Shared = false
org := models.Organization{}
org.Name = "my-org"
org.GUID = "my-org-guid"
org.QuotaDefinition = models.QuotaFields{
Name: "cantina-quota",
MemoryLimit: 512,
InstanceMemoryLimit: 256,
RoutesLimit: 2,
ServicesLimit: 5,
NonBasicServicesAllowed: true,
AppInstanceLimit: 7,
}
org.Spaces = []models.SpaceFields{developmentSpaceFields, stagingSpaceFields}
org.Domains = []models.DomainFields{domainFields, cfAppDomainFields}
org.SpaceQuotas = []models.SpaceQuota{
{Name: "space-quota-1", GUID: "space-quota-1-guid", MemoryLimit: 512, InstanceMemoryLimit: -1},
开发者ID:yingkitw,项目名称:cli,代码行数:31,代码来源:org_test.go
示例2:
testterm "github.com/cloudfoundry/cli/testhelpers/terminal"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/cloudfoundry/cli/testhelpers/matchers"
)
var _ = Describe("Login Command", func() {
var (
Flags []string
Config coreconfig.Repository
ui *testterm.FakeUI
authRepo *authenticationfakes.FakeAuthenticationRepository
endpointRepo *coreconfigfakes.FakeEndpointRepository
orgRepo *organizationsfakes.FakeOrganizationRepository
spaceRepo *apifakes.FakeSpaceRepository
org models.Organization
deps commandregistry.Dependency
minCLIVersion string
minRecommendedCLIVersion string
)
updateCommandDependency := func(pluginCall bool) {
deps.UI = ui
deps.Config = Config
deps.RepoLocator = deps.RepoLocator.SetEndpointRepository(endpointRepo)
deps.RepoLocator = deps.RepoLocator.SetAuthenticationRepository(authRepo)
deps.RepoLocator = deps.RepoLocator.SetOrganizationRepository(orgRepo)
deps.RepoLocator = deps.RepoLocator.SetSpaceRepository(spaceRepo)
开发者ID:yingkitw,项目名称:cli,代码行数:31,代码来源:login_test.go
示例3:
It("returns a UserRequirement", func() {
actualRequirements := cmd.Requirements(factory, flagContext)
Expect(factory.NewUserRequirementCallCount()).To(Equal(1))
actualUsername, actualWantGUID := factory.NewUserRequirementArgsForCall(0)
Expect(actualUsername).To(Equal("the-user-name"))
Expect(actualWantGUID).To(BeTrue())
Expect(actualRequirements).To(ContainElement(userRequirement))
})
})
})
})
Describe("Execute", func() {
var (
org models.Organization
err error
)
BeforeEach(func() {
flagContext.Parse("the-user-name", "the-org-name", "the-space-name", "SpaceManager")
cmd.Requirements(factory, flagContext)
org = models.Organization{}
org.GUID = "the-org-guid"
org.Name = "the-org-name"
organizationRequirement.GetOrganizationReturns(org)
})
JustBeforeEach(func() {
err = cmd.Execute(flagContext)
})
开发者ID:jsloyer,项目名称:cli,代码行数:32,代码来源:unset_space_role_test.go
示例4:
runCommand("username", "org", "role")
Expect(testcmd.CommandDidPassRequirements).To(BeTrue())
Expect(requirementsFactory.UserUsername).To(Equal("username"))
Expect(requirementsFactory.OrganizationName).To(Equal("org"))
})
})
Context("when logged in", func() {
BeforeEach(func() {
requirementsFactory.LoginSuccess = true
user := models.UserFields{}
user.Username = "some-user"
user.Guid = "some-user-guid"
org := models.Organization{}
org.Name = "some-org"
org.Guid = "some-org-guid"
requirementsFactory.UserFields = user
requirementsFactory.Organization = org
})
It("unsets a user's org role", func() {
runCommand("my-username", "my-org", "OrgManager")
Expect(ui.Outputs).To(ContainSubstrings(
[]string{"Removing role", "OrgManager", "my-username", "my-org", "my-user"},
[]string{"OK"},
))
开发者ID:hail100,项目名称:cli,代码行数:30,代码来源:unset_org_role_test.go
示例5:
Context("when the user is logged in", func() {
BeforeEach(func() {
requirementsFactory.NewLoginRequirementReturns(requirements.Passing{})
})
var expectOrgToBeCleared = func() {
Expect(config.OrganizationFields()).To(Equal(models.OrganizationFields{}))
}
var expectSpaceToBeCleared = func() {
Expect(config.SpaceFields()).To(Equal(models.SpaceFields{}))
}
Context("there are no errors", func() {
BeforeEach(func() {
org := models.Organization{}
org.Name = "my-organization"
org.GUID = "my-organization-guid"
orgRepo.ListOrgsReturns([]models.Organization{org}, nil)
orgRepo.FindByNameReturns(org, nil)
config.SetOrganizationFields(models.OrganizationFields{Name: org.Name, GUID: org.GUID})
})
It("it updates the organization in the config", func() {
callTarget([]string{"-o", "my-organization"})
Expect(orgRepo.FindByNameCallCount()).To(Equal(1))
Expect(orgRepo.FindByNameArgsForCall(0)).To(Equal("my-organization"))
Expect(ui.ShowConfigurationCalled).To(BeTrue())
开发者ID:Reejoshi,项目名称:cli,代码行数:30,代码来源:target_test.go
示例6:
"github.com/cloudfoundry/cli/cf/configuration/coreconfig"
"github.com/cloudfoundry/cli/cf/models"
testcmd "github.com/cloudfoundry/cli/testhelpers/commands"
testconfig "github.com/cloudfoundry/cli/testhelpers/configuration"
testterm "github.com/cloudfoundry/cli/testhelpers/terminal"
. "github.com/cloudfoundry/cli/testhelpers/matchers"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("delete-org command", func() {
var (
config coreconfig.Repository
ui *testterm.FakeUI
requirementsFactory *requirementsfakes.FakeFactory
orgRepo *organizationsfakes.FakeOrganizationRepository
org models.Organization
deps commandregistry.Dependency
)
updateCommandDependency := func(pluginCall bool) {
deps.UI = ui
deps.RepoLocator = deps.RepoLocator.SetOrganizationRepository(orgRepo)
deps.Config = config
commandregistry.Commands.SetCommand(commandregistry.Commands.FindCommand("delete-org").SetDependency(deps, pluginCall))
}
BeforeEach(func() {
ui = &testterm.FakeUI{
Inputs: []string{"y"},
}
开发者ID:Reejoshi,项目名称:cli,代码行数:32,代码来源:delete_org_test.go
示例7:
testcmd "github.com/cloudfoundry/cli/testhelpers/commands"
testconfig "github.com/cloudfoundry/cli/testhelpers/configuration"
testreq "github.com/cloudfoundry/cli/testhelpers/requirements"
testterm "github.com/cloudfoundry/cli/testhelpers/terminal"
. "github.com/cloudfoundry/cli/cf/commands/organization"
. "github.com/cloudfoundry/cli/testhelpers/matchers"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("delete-org command", func() {
var (
config core_config.ReadWriter
ui *testterm.FakeUI
requirementsFactory *testreq.FakeReqFactory
orgRepo *test_org.FakeOrganizationRepository
org models.Organization
)
BeforeEach(func() {
ui = &testterm.FakeUI{
Inputs: []string{"y"},
}
config = testconfig.NewRepositoryWithDefaults()
requirementsFactory = &testreq.FakeReqFactory{}
org = models.Organization{}
org.Name = "org-to-delete"
org.Guid = "org-to-delete-guid"
orgRepo = &test_org.FakeOrganizationRepository{}
开发者ID:tools-alexuser01,项目名称:cli,代码行数:31,代码来源:delete_org_test.go
示例8:
userRepo := &testapi.FakeUserRepository{}
args := []string{"Org1"}
requirementsFactory.LoginSuccess = false
callOrgUsers(args, requirementsFactory, userRepo)
Expect(testcmd.CommandDidPassRequirements).To(BeFalse())
requirementsFactory.LoginSuccess = true
callOrgUsers(args, requirementsFactory, userRepo)
Expect(testcmd.CommandDidPassRequirements).To(BeTrue())
Expect("Org1").To(Equal(requirementsFactory.OrganizationName))
})
It("TestOrgUsers", func() {
org := models.Organization{}
org.Name = "Found Org"
org.Guid = "found-org-guid"
userRepo := &testapi.FakeUserRepository{}
user := models.UserFields{}
user.Username = "user1"
user2 := models.UserFields{}
user2.Username = "user2"
user3 := models.UserFields{}
user3.Username = "user3"
user4 := models.UserFields{}
user4.Username = "user4"
userRepo.ListUsersByRole = map[string][]models.UserFields{
models.ORG_MANAGER: []models.UserFields{user, user2},
models.BILLING_MANAGER: []models.UserFields{user4},
开发者ID:palakmathur,项目名称:cli,代码行数:31,代码来源:org_users_test.go
示例9:
Expect("some-org").To(Equal(requirementsFactory.OrganizationName))
})
})
It("fails with usage when not invoked with exactly two args", func() {
runCommand("my-org")
Expect(ui.Outputs).To(ContainSubstrings(
[]string{"Incorrect Usage", "Requires arguments"},
))
})
Context("when logged in and given some users in the org and space", func() {
BeforeEach(func() {
requirementsFactory.LoginSuccess = true
org := models.Organization{}
org.Name = "Org1"
org.GUID = "org1-guid"
space := models.Space{}
space.Name = "Space1"
space.GUID = "space1-guid"
requirementsFactory.Organization = org
spaceRepo.FindByNameInOrgReturns(space, nil)
user := models.UserFields{}
user.Username = "user1"
user2 := models.UserFields{}
user2.Username = "user2"
user3 := models.UserFields{}
user3.Username = "user3"
开发者ID:yingkitw,项目名称:cli,代码行数:31,代码来源:space_users_test.go
示例10:
[]string{"Incorrect Usage", "Requires", "arguments"},
))
callRenameOrg([]string{"foo"})
Expect(ui.Outputs).To(ContainSubstrings(
[]string{"Incorrect Usage", "Requires", "arguments"},
))
})
It("fails requirements when not logged in", func() {
Expect(callRenameOrg([]string{"my-org", "my-new-org"})).To(BeFalse())
})
Context("when logged in and given an org to rename", func() {
BeforeEach(func() {
org := models.Organization{}
org.Name = "the-old-org-name"
org.Guid = "the-old-org-guid"
requirementsFactory.Organization = org
requirementsFactory.LoginSuccess = true
})
It("passes requirements", func() {
Expect(callRenameOrg([]string{"the-old-org-name", "the-new-org-name"})).To(BeTrue())
})
It("renames an organization", func() {
targetedOrgName := configRepo.OrganizationFields().Name
callRenameOrg([]string{"the-old-org-name", "the-new-org-name"})
Expect(ui.Outputs).To(ContainSubstrings(
[]string{"Renaming org", "the-old-org-name", "the-new-org-name", "my-user"},
开发者ID:vframbach,项目名称:cli,代码行数:31,代码来源:rename_org_test.go
示例11:
developmentSpaceFields.Guid = "dev-space-guid-1"
stagingSpaceFields := models.SpaceFields{}
stagingSpaceFields.Name = "staging"
stagingSpaceFields.Guid = "staging-space-guid-1"
domainFields := models.DomainFields{}
domainFields.Name = "cfapps.io"
domainFields.Guid = "1111"
domainFields.OwningOrganizationGuid = "my-org-guid"
domainFields.Shared = true
cfAppDomainFields := models.DomainFields{}
cfAppDomainFields.Name = "cf-app.com"
cfAppDomainFields.Guid = "2222"
cfAppDomainFields.OwningOrganizationGuid = "my-org-guid"
cfAppDomainFields.Shared = false
org := models.Organization{}
org.Name = "my-org"
org.Guid = "my-org-guid"
org.QuotaDefinition = models.NewQuotaFields("cantina-quota", 512, 256, 2, 5, true)
org.Spaces = []models.SpaceFields{developmentSpaceFields, stagingSpaceFields}
org.Domains = []models.DomainFields{domainFields, cfAppDomainFields}
org.SpaceQuotas = []models.SpaceQuota{
{Name: "space-quota-1", Guid: "space-quota-1-guid", MemoryLimit: 512, InstanceMemoryLimit: -1},
{Name: "space-quota-2", Guid: "space-quota-2-guid", MemoryLimit: 256, InstanceMemoryLimit: 128},
}
requirementsFactory.LoginSuccess = true
requirementsFactory.Organization = org
})
It("shows the org with the given name", func() {
开发者ID:vframbach,项目名称:cli,代码行数:31,代码来源:org_test.go
示例12:
runCommand("org", "quota", "extra-stuff")
Expect(ui.Outputs()).To(ContainSubstrings(
[]string{"Incorrect Usage", "Requires", "arguments"},
))
})
It("fails requirements when not logged in", func() {
requirementsFactory.NewLoginRequirementReturns(requirements.Failing{Message: "not logged in"})
Expect(runCommand("my-org", "my-quota")).To(BeFalse())
})
Context("when logged in", func() {
BeforeEach(func() {
org := models.Organization{}
org.Name = "my-org"
org.GUID = "my-org-guid"
orgReq := new(requirementsfakes.FakeOrganizationRequirement)
orgReq.GetOrganizationReturns(org)
requirementsFactory.NewOrganizationRequirementReturns(orgReq)
requirementsFactory.NewLoginRequirementReturns(requirements.Passing{})
})
It("assigns a quota to an org", func() {
quota := models.QuotaFields{Name: "my-quota", GUID: "my-quota-guid"}
quotaRepo.FindByNameReturns(quota, nil)
runCommand("my-org", "my-quota")
开发者ID:Reejoshi,项目名称:cli,代码行数:29,代码来源:set_quota_test.go
示例13:
})
It("fails and tells the user", func() {
runCommand("sec group", "org", "space")
Expect(fakeOrgRepo.FindByNameArgsForCall(0)).To(Equal("org"))
Expect(ui.Outputs).To(ContainSubstrings(
[]string{"FAILED"},
[]string{"Org", "org", "not found"},
))
})
})
Context("when the space does not exist", func() {
BeforeEach(func() {
org := models.Organization{}
org.Name = "org-name"
org.GUID = "org-guid"
fakeOrgRepo.ListOrgsReturns([]models.Organization{org}, nil)
fakeOrgRepo.FindByNameReturns(org, nil)
fakeSpaceRepo.FindByNameInOrgReturns(models.Space{}, errors.NewModelNotFoundError("Space", "space-name"))
})
It("fails and tells the user", func() {
runCommand("sec group", "org-name", "space-name")
name, orgGUID := fakeSpaceRepo.FindByNameInOrgArgsForCall(0)
Expect(name).To(Equal("space-name"))
Expect(orgGUID).To(Equal("org-guid"))
Expect(ui.Outputs).To(ContainSubstrings(
[]string{"FAILED"},
开发者ID:yingkitw,项目名称:cli,代码行数:31,代码来源:bind_security_group_test.go
示例14:
It("fails when not logged in", func() {
requirementsFactory.LoginSuccess = false
Expect(runCommand()).To(BeFalse())
})
It("should fail with usage when provided any arguments", func() {
requirementsFactory.LoginSuccess = true
Expect(runCommand("blahblah")).To(BeFalse())
Expect(ui.FailedWithUsage).To(BeTrue())
})
})
Context("when there are orgs to be listed", func() {
BeforeEach(func() {
org1 := models.Organization{}
org1.Name = "Organization-1"
org2 := models.Organization{}
org2.Name = "Organization-2"
org3 := models.Organization{}
org3.Name = "Organization-3"
orgRepo.ListOrgsReturns([]models.Organization{org1, org2, org3}, nil)
})
It("lists orgs", func() {
runCommand()
Expect(ui.Outputs).To(ContainSubstrings(
开发者ID:raghulsid,项目名称:cli,代码行数:31,代码来源:orgs_test.go
示例15:
var _ = Describe("Testing with ginkgo", func() {
It("TestShowOrgRequirements", func() {
args := []string{"my-org"}
requirementsFactory := &testreq.FakeReqFactory{LoginSuccess: true}
callShowOrg(args, requirementsFactory)
Expect(testcmd.CommandDidPassRequirements).To(BeTrue())
requirementsFactory = &testreq.FakeReqFactory{LoginSuccess: false}
callShowOrg(args, requirementsFactory)
Expect(testcmd.CommandDidPassRequirements).To(BeFalse())
})
It("TestShowOrgFailsWithUsage", func() {
org := models.Organization{}
org.Name = "my-org"
org.Guid = "my-org-guid"
requirementsFactory := &testreq.FakeReqFactory{Organization: org, LoginSuccess: true}
args := []string{"my-org"}
ui := callShowOrg(args, requirementsFactory)
Expect(ui.FailedWithUsage).To(BeFalse())
args = []string{}
ui = callShowOrg(args, requirementsFactory)
Expect(ui.FailedWithUsage).To(BeTrue())
})
It("TestRunWhenOrganizationExists", func() {
developmentSpaceFields := models.SpaceFields{}
开发者ID:GABONIA,项目名称:cli,代码行数:30,代码来源:org_test.go
示例16:
})
It("fails and tells the user", func() {
runCommand("sec group", "org", "space")
Expect(fakeOrgRepo.FindByNameArgsForCall(0)).To(Equal("org"))
Expect(ui.Outputs).To(ContainSubstrings(
[]string{"FAILED"},
[]string{"Org", "org", "not found"},
))
})
})
Context("when the space does not exist", func() {
BeforeEach(func() {
org := models.Organization{}
org.Name = "org-name"
org.Guid = "org-guid"
fakeOrgRepo.ListOrgsReturns([]models.Organization{org}, nil)
fakeOrgRepo.FindByNameReturns(org, nil)
fakeSpaceRepo.FindByNameInOrgError = errors.NewModelNotFoundError("Space", "space-name")
})
It("fails and tells the user", func() {
runCommand("sec group", "org-name", "space-name")
Expect(fakeSpaceRepo.FindByNameInOrgName).To(Equal("space-name"))
Expect(fakeSpaceRepo.FindByNameInOrgOrgGuid).To(Equal("org-guid"))
Expect(ui.Outputs).To(ContainSubstrings(
[]string{"FAILED"},
[]string{"Space", "space-name", "not found"},
开发者ID:tools-alexuser01,项目名称:cli,代码行数:31,代码来源:bind_security_group_test.go
示例17:
service2 := models.ServiceOffering{ServiceOfferingFields: models.ServiceOfferingFields{Label: "my-service2", Guid: "service-guid2"}}
serviceRepo.FindServiceOfferingByLabelServiceOffering = service2
servicePlanRepo.SearchReturns = map[string][]models.ServicePlanFields{
"service-guid": {{Name: "service-plan", Guid: "service-plan-guid"}, {Name: "other-plan", Guid: "other-plan-guid"}},
"service-guid2": {{Name: "service-plan2", Guid: "service-plan2-guid"}},
}
servicePlanVisibilityRepo.ListReturns([]models.ServicePlanVisibilityFields{
{ServicePlanGuid: "service-plan2-guid", OrganizationGuid: "org-guid"},
{ServicePlanGuid: "service-plan2-guid", OrganizationGuid: "org2-guid"},
}, nil)
org1 := models.Organization{}
org1.Name = "org1"
org1.Guid = "org-guid"
org2 := models.Organization{}
org2.Name = "org2"
org2.Guid = "org2-guid"
orgRepo.Organizations = []models.Organization{
org1,
org2,
}
})
Describe("GetBrokerWithSingleService", func() {
It("Returns a single broker contained in a slice with all dependencies populated", func() {
开发者ID:EthanWu,项目名称:cli,代码行数:30,代码来源:services_test.go
示例18:
},
"spaces": [{
"metadata": { "guid": "space1-guid" },
"entity": { "name": "Space1" }
}],
"domains": [{
"metadata": { "guid": "domain1-guid" },
"entity": { "name": "cfapps.io" }
}]
}
}]}`},
})
testserver, handler, repo := createOrganizationRepo(req)
defer testserver.Close()
existingOrg := models.Organization{}
existingOrg.Guid = "org1-guid"
existingOrg.Name = "Org1"
org, apiErr := repo.FindByName("Org1")
Expect(handler).To(HaveAllRequestsCalled())
Expect(apiErr).NotTo(HaveOccurred())
Expect(org.Name).To(Equal(existingOrg.Name))
Expect(org.Guid).To(Equal(existingOrg.Guid))
Expect(org.QuotaDefinition.Name).To(Equal("not-your-average-quota"))
Expect(org.QuotaDefinition.MemoryLimit).To(Equal(int64(128)))
Expect(len(org.Spaces)).To(Equal(1))
Expect(org.Spaces[0].Name).To(Equal("Space1"))
Expect(org.Spaces[0].Guid).To(Equal("space1-guid"))
Expect(len(org.Domains)).To(Equal(1))
开发者ID:matanzit,项目名称:cli,代码行数:31,代码来源:organizations_test.go
示例19:
Context("when the user is logged in", func() {
BeforeEach(func() {
requirementsFactory.LoginSuccess = true
})
var expectOrgToBeCleared = func() {
Expect(config.OrganizationFields()).To(Equal(models.OrganizationFields{}))
}
var expectSpaceToBeCleared = func() {
Expect(config.SpaceFields()).To(Equal(models.SpaceFields{}))
}
Context("there are no errors", func() {
BeforeEach(func() {
org := models.Organization{}
org.Name = "my-organization"
org.Guid = "my-organization-guid"
orgRepo.ListOrgsReturns([]models.Organization{org}, nil)
orgRepo.FindByNameReturns(org, nil)
})
It("it updates the organization in the config", func() {
callTarget([]string{"-o", "my-organization"})
Expect(orgRepo.FindByNameArgsForCall(0)).To(Equal("my-organization"))
Expect(ui.ShowConfigurationCalled).To(BeTrue())
Expect(config.OrganizationFields().Guid).To(Equal("my-organization-guid"))
})
开发者ID:vframbach,项目名称:cli,代码行数:31,代码来源:target_test.go
示例20:
var _ = Describe("Service Plans", func() {
var (
actor actors.ServicePlanActor
servicePlanRepo *testapi.FakeServicePlanRepo
servicePlanVisibilityRepo *testapi.FakeServicePlanVisibilityRepository
orgRepo *fake_orgs.FakeOrganizationRepository
planBuilder *fake_plan_builder.FakePlanBuilder
serviceBuilder *fake_service_builder.FakeServiceBuilder
privateServicePlanVisibilityFields models.ServicePlanVisibilityFields
publicServicePlanVisibilityFields models.ServicePlanVisibilityFields
limitedServicePlanVisibilityFields models.ServicePlanVisibilityFields
publicServicePlan models.ServicePlanFields
privateServicePlan models.ServicePlanFields
limitedServicePlan models.ServicePlanFields
publicService models.ServiceOffering
mixedService models.ServiceOffering
privateService models.ServiceOffering
publicAndLimitedService models.ServiceOffering
org1 models.Organization
org2 models.Organization
visibility1 models.ServicePlanVisibilityFields
)
BeforeEach(func() {
开发者ID:vframbach,项目名称:cli,代码行数:31,代码来源:services_plans_test.go
注:本文中的github.com/cloudfoundry/cli/cf/models.Organization类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论