本文整理汇总了Golang中github.com/juju/charm.ParseURL函数的典型用法代码示例。如果您正苦于以下问题:Golang ParseURL函数的具体用法?Golang ParseURL怎么用?Golang ParseURL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ParseURL函数的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: CharmURL
// CharmURL returns the service's charm URL, and whether units should
// upgrade to the charm with that URL even if they are in an error
// state (force flag).
//
// NOTE: This differs from state.Service.CharmURL() by returning
// an error instead as well, because it needs to make an API call.
func (s *Service) CharmURL() (*charm.URL, bool, error) {
var results params.StringBoolResults
args := params.Entities{
Entities: []params.Entity{{Tag: s.tag}},
}
err := s.st.call("CharmURL", args, &results)
if err != nil {
return nil, false, err
}
if len(results.Results) != 1 {
return nil, false, fmt.Errorf("expected 1 result, got %d", len(results.Results))
}
result := results.Results[0]
if result.Error != nil {
return nil, false, result.Error
}
if result.Result != "" {
curl, err := charm.ParseURL(result.Result)
if err != nil {
return nil, false, err
}
return curl, result.Ok, nil
}
return nil, false, fmt.Errorf("%q has no charm url set", s.tag)
}
开发者ID:rogpeppe,项目名称:juju,代码行数:31,代码来源:service.go
示例2: serveInfo
func (s *MockStore) serveInfo(w http.ResponseWriter, r *http.Request) {
if metadata := r.Header.Get("Juju-Metadata"); metadata != "" {
s.Metadata = append(s.Metadata, metadata)
logger.Infof("Juju metadata: " + metadata)
}
r.ParseForm()
if r.Form.Get("stats") == "0" {
s.InfoRequestCountNoStats += 1
} else {
s.InfoRequestCount += 1
}
response := map[string]*charm.InfoResponse{}
for _, url := range r.Form["charms"] {
cr := &charm.InfoResponse{}
response[url] = cr
charmURL, err := charm.ParseURL(url)
if err == charm.ErrUnresolvedUrl {
ref, _, err := charm.ParseReference(url)
if err != nil {
panic(err)
}
if s.DefaultSeries == "" {
panic(fmt.Errorf("mock store lacks a default series cannot resolve charm URL: %q", url))
}
charmURL = &charm.URL{Reference: ref, Series: s.DefaultSeries}
}
switch charmURL.Name {
case "borken":
cr.Errors = append(cr.Errors, "badness")
case "terracotta":
cr.Errors = append(cr.Errors, "cannot get revision")
case "unwise":
cr.Warnings = append(cr.Warnings, "foolishness")
fallthrough
default:
if rev, ok := s.charms[charmURL.WithRevision(-1).String()]; ok {
if charmURL.Revision == -1 {
cr.Revision = rev
} else {
cr.Revision = charmURL.Revision
}
cr.Sha256 = s.bundleSha256
cr.CanonicalURL = charmURL.String()
} else {
cr.Errors = append(cr.Errors, "entry not found")
}
}
}
data, err := json.Marshal(response)
if err != nil {
panic(err)
}
w.Header().Set("Content-Type", "application/json")
_, err = w.Write(data)
if err != nil {
panic(err)
}
}
开发者ID:bz2,项目名称:charm,代码行数:60,代码来源:mockstore.go
示例3: SetCharmURL
// SetCharmURL sets the charm URL for each given unit. An error will
// be returned if a unit is dead, or the charm URL is not know.
func (u *UniterAPI) SetCharmURL(args params.EntitiesCharmURL) (params.ErrorResults, error) {
result := params.ErrorResults{
Results: make([]params.ErrorResult, len(args.Entities)),
}
canAccess, err := u.accessUnit()
if err != nil {
return params.ErrorResults{}, err
}
for i, entity := range args.Entities {
err := common.ErrPerm
if canAccess(entity.Tag) {
var unit *state.Unit
unit, err = u.getUnit(entity.Tag)
if err == nil {
var curl *charm.URL
curl, err = charm.ParseURL(entity.CharmURL)
if err == nil {
err = unit.SetCharmURL(curl)
}
}
}
result.Results[i].Error = common.ServerError(err)
}
return result, nil
}
开发者ID:rogpeppe,项目名称:juju,代码行数:27,代码来源:uniter.go
示例4: ReadCharmURL
// ReadCharmURL reads a charm identity file from the supplied path.
func ReadCharmURL(path string) (*charm.URL, error) {
surl := ""
if err := utils.ReadYaml(path, &surl); err != nil {
return nil, err
}
return charm.ParseURL(surl)
}
开发者ID:jiasir,项目名称:juju,代码行数:8,代码来源:charm.go
示例5: TestParseUnresolved
func (s *URLSuite) TestParseUnresolved(c *gc.C) {
for _, t := range inferNoDefaultSeriesTests {
if t.resolved {
url, err := charm.ParseURL(t.vague)
c.Assert(err, gc.IsNil)
c.Assert(url.Series, gc.Not(gc.Equals), "")
} else {
_, series, err := charm.ParseReference(t.vague)
c.Assert(err, gc.IsNil)
c.Assert(series, gc.Equals, "")
_, err = charm.ParseURL(t.vague)
c.Assert(err, gc.NotNil)
c.Assert(err, gc.Equals, charm.ErrUnresolvedUrl)
}
}
}
开发者ID:howbazaar,项目名称:charm,代码行数:16,代码来源:url_test.go
示例6: Run
func (c *DeleteCharmCommand) Run(ctx *cmd.Context) error {
// Read config
err := c.ConfigCommand.ReadConfig(ctx)
if err != nil {
return err
}
// Parse the charm URL
charmUrl, err := charm.ParseURL(c.Url)
if err != nil {
return err
}
// Open the charm store storage
s, err := charmstore.Open(c.Config.MongoURL)
if err != nil {
return err
}
defer s.Close()
// Delete the charm by URL
_, err = s.DeleteCharm(charmUrl)
if err != nil {
return err
}
fmt.Fprintln(ctx.Stdout, "Charm", charmUrl, "deleted.")
return nil
}
开发者ID:rogpeppe,项目名称:juju,代码行数:28,代码来源:deletecharm.go
示例7: CharmArchiveURL
// CharmArchiveURL returns the URL, corresponding to the charm archive
// (bundle) in the provider storage for each given charm URL, along
// with the DisableSSLHostnameVerification flag.
func (u *UniterAPI) CharmArchiveURL(args params.CharmURLs) (params.CharmArchiveURLResults, error) {
result := params.CharmArchiveURLResults{
Results: make([]params.CharmArchiveURLResult, len(args.URLs)),
}
// Get the SSL hostname verification environment setting.
envConfig, err := u.st.EnvironConfig()
if err != nil {
return result, err
}
// SSLHostnameVerification defaults to true, so we need to
// invert that, for backwards-compatibility (older versions
// will have DisableSSLHostnameVerification: false by default).
disableSSLHostnameVerification := !envConfig.SSLHostnameVerification()
for i, arg := range args.URLs {
curl, err := charm.ParseURL(arg.URL)
if err != nil {
err = common.ErrPerm
} else {
var sch *state.Charm
sch, err = u.st.Charm(curl)
if errors.IsNotFound(err) {
err = common.ErrPerm
}
if err == nil {
result.Results[i].Result = sch.BundleURL().String()
result.Results[i].DisableSSLHostnameVerification = disableSSLHostnameVerification
}
}
result.Results[i].Error = common.ServerError(err)
}
return result, nil
}
开发者ID:rogpeppe,项目名称:juju,代码行数:35,代码来源:uniter.go
示例8: ServiceGetCharmURL
// ServiceGetCharmURL returns the charm URL the given service is
// running at present.
func (c *Client) ServiceGetCharmURL(serviceName string) (*charm.URL, error) {
result := new(params.StringResult)
args := params.ServiceGet{ServiceName: serviceName}
err := c.call("ServiceGetCharmURL", args, &result)
if err != nil {
return nil, err
}
return charm.ParseURL(result.Result)
}
开发者ID:klyachin,项目名称:juju,代码行数:11,代码来源:client.go
示例9: TestInferURLNoDefaultSeries
func (s *URLSuite) TestInferURLNoDefaultSeries(c *gc.C) {
for _, t := range inferNoDefaultSeriesTests {
inferred, err := charm.InferURL(t.vague, "")
if t.exact == "" {
c.Assert(err, gc.ErrorMatches, fmt.Sprintf("cannot infer charm URL for %q: no series provided", t.vague))
} else {
parsed, err := charm.ParseURL(t.exact)
c.Assert(err, gc.IsNil)
c.Assert(inferred, gc.DeepEquals, parsed, gc.Commentf(`InferURL(%q, "")`, t.vague))
}
}
}
开发者ID:howbazaar,项目名称:charm,代码行数:12,代码来源:url_test.go
示例10: uniqueNameURLs
// uniqueNameURLs returns the branch URL and the charm URL for the
// provided Launchpad branch unique name. The unique name must be
// in the form:
//
// ~<user>/charms/<series>/<charm name>/trunk
//
// For testing purposes, if name has a prefix preceding a string in
// this format, the prefix is stripped out for computing the charm
// URL, and the unique name is returned unchanged as the branch URL.
func uniqueNameURLs(name string) (burl string, curl *charm.URL, err error) {
u := strings.Split(name, "/")
if len(u) > 5 {
u = u[len(u)-5:]
burl = name
} else {
burl = "lp:" + name
}
if len(u) < 5 || u[1] != "charms" || u[4] != "trunk" || len(u[0]) == 0 || u[0][0] != '~' {
return "", nil, fmt.Errorf("unwanted branch name: %s", name)
}
curl, err = charm.ParseURL(fmt.Sprintf("cs:%s/%s/%s", u[0], u[2], u[3]))
if err != nil {
return "", nil, err
}
return burl, curl, nil
}
开发者ID:rogpeppe,项目名称:charmstore,代码行数:26,代码来源:lpad.go
示例11: CharmArchiveSha256
// CharmArchiveSha256 returns the SHA256 digest of the charm archive
// (bundle) data for each charm url in the given parameters.
func (u *UniterAPI) CharmArchiveSha256(args params.CharmURLs) (params.StringResults, error) {
result := params.StringResults{
Results: make([]params.StringResult, len(args.URLs)),
}
for i, arg := range args.URLs {
curl, err := charm.ParseURL(arg.URL)
if err != nil {
err = common.ErrPerm
} else {
var sch *state.Charm
sch, err = u.st.Charm(curl)
if errors.IsNotFound(err) {
err = common.ErrPerm
}
if err == nil {
result.Results[i].Result = sch.BundleSha256()
}
}
result.Results[i].Error = common.ServerError(err)
}
return result, nil
}
开发者ID:rogpeppe,项目名称:juju,代码行数:24,代码来源:uniter.go
示例12: TestInferURL
func (s *URLSuite) TestInferURL(c *gc.C) {
for i, t := range inferTests {
c.Logf("test %d", i)
comment := gc.Commentf("InferURL(%q, %q)", t.vague, "defseries")
inferred, ierr := charm.InferURL(t.vague, "defseries")
parsed, perr := charm.ParseURL(t.exact)
if perr == nil {
c.Check(inferred, gc.DeepEquals, parsed, comment)
c.Check(ierr, gc.IsNil)
} else {
expect := perr.Error()
if t.vague != t.exact {
if colIdx := strings.Index(expect, ":"); colIdx > 0 {
expect = expect[:colIdx]
}
}
c.Check(ierr.Error(), gc.Matches, expect+".*", comment)
}
}
u, err := charm.InferURL("~blah", "defseries")
c.Assert(u, gc.IsNil)
c.Assert(err, gc.ErrorMatches, "charm URL without charm name: .*")
}
开发者ID:howbazaar,项目名称:charm,代码行数:23,代码来源:url_test.go
示例13: TestParseURL
func (s *URLSuite) TestParseURL(c *gc.C) {
for i, t := range urlTests {
c.Logf("test %d", i)
url, uerr := charm.ParseURL(t.s)
ref, series, rerr := charm.ParseReference(t.s)
comment := gc.Commentf("ParseURL(%q)", t.s)
if t.url != nil && t.url.Series == "" {
if t.err != "" {
// Expected error should match
c.Assert(rerr, gc.NotNil, comment)
c.Check(rerr.Error(), gc.Matches, t.err, comment)
} else {
// Expected charm reference should match
c.Check(ref, gc.DeepEquals, t.url.Reference, comment)
c.Check(t.url.Reference.String(), gc.Equals, t.s)
}
if rerr != nil {
// If ParseReference has an error, ParseURL should share it
c.Check(uerr.Error(), gc.Equals, rerr.Error(), comment)
} else {
// Otherwise, ParseURL with an empty series should error unresolved.
c.Check(uerr.Error(), gc.Equals, charm.ErrUnresolvedUrl.Error(), comment)
}
} else {
if t.err != "" {
c.Assert(uerr, gc.NotNil, comment)
c.Check(uerr.Error(), gc.Matches, t.err, comment)
c.Check(uerr.Error(), gc.Equals, rerr.Error(), comment)
} else {
c.Check(url.Series, gc.Equals, series, comment)
c.Check(url, gc.DeepEquals, t.url, comment)
c.Check(t.url.String(), gc.Equals, t.s)
}
}
}
}
开发者ID:howbazaar,项目名称:charm,代码行数:36,代码来源:url_test.go
注:本文中的github.com/juju/charm.ParseURL函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论